Layoutmanager der vorhanden Platz beruecksichtigt?

Status
Nicht offen für weitere Antworten.
T

Torro

Gast
Hi,

Der eigentliche Titel dieses Posts darf aus Spamschutzgründen nicht 'Layoutmanager der vorhanden Platz beruecksichtigt?' sein !

Beim BorderLayout kann man zwei Elemente Nebeneinander anordnen:

WEST, CENTER

oder Untereinander:

NORTH, CENTER



Nun haette ich gerne einen LayoutManager, der zwei Elemente nebeneinander anordnet wenn genug Platz im Parent Container vorhanden ist. Wenn nicht soll er sie untereinander anordnen. Dies soll dynamisch geschehen, wenn ich den parent container vergroessere/verkleinere.

Wichtig ist, dass das wenn die zwei Elemente nebeneinander angeordnet sind, dass es sich wie bei einem BorderLayout verhaelt, naemlich, dass das recht/CENTER Element allen verbleibenden Platz der parent component zugesprochen bekommt.


Kann man das irgendwie leicht machen?

edit by thE_29: Titel eingefügt!
 

thE_29

Top Contributor
Einfach das BorderLayout lassen!
Und im NORTH ein Panel einfügen, welches mit FlowLayout befüllt wird.
Wenn der in einer Zeile keinen Platz hat, sollte er in die 2te umbrechen!
 
G

Guest

Gast
thE_29 hat gesagt.:
Einfach das BorderLayout lassen!
Und im NORTH ein Panel einfügen, welches mit FlowLayout befüllt wird.
Wenn der in einer Zeile keinen Platz hat, sollte er in die 2te umbrechen!

Das habe ich mir auch schon ueberlegt. Nur wird dann die ober und untere Componente nicht auf die Breite der Parent-Comp. gestreckt - was der Fall waere wenn man Borderlayout nutzt mit North and South.
 

André Uhres

Top Contributor
Einfach LayoutManager mit seinen fünf Methoden implementieren.

EDIT: Beispiel:
Code:
/*
 * ListLayout2.java
 * author: Andre Uhres
 * 15.09.2008
 * update 27.10.2008
 * update 31.10.2008
 */
package tf.net.andreuhres.swing.ui.layout;
/**
 * ListLayout2 is an extension of ListLayout which you find here:
 * [url]http://www.java-forum.org/de/userfiles/user3690/ListLayout.jar[/url]
 * 
 * The ListLayout2 class is a layout manager
 * that lays out a container's components as a dynamic list with two columns
 * (or only one column, if there is not enough space for two columns).
 * The size of each component is set to its preferredSize, except
 * for the rightmost column, whose width will take all available space.
 * The container is filled top-down with rows, each row being filled from left
 * to right with the components.
 * 
 * You are welcome to adapt this code to your needs
 */
import java.awt.*;
public class ListLayout2 extends ListLayout {
    private int index, currentIndex;
    private Dimension dim = new Dimension();
    public ListLayout2() {
        super();
    }
    public ListLayout2(final int hgap, final int vgap) {
        super(hgap, vgap);
    }
    @Override
    public Dimension minimumLayoutSize(final Container parent) {
        return preferredLayoutSize(parent);
    }
    @Override
    public Dimension preferredLayoutSize(final Container parent) {
        if(dim.width < 150){
            dim.width = 150;
        }
        return dim;
    }
    @Override
    public void layoutContainer(final Container target) {
        Insets insets = target.getInsets();
        int y = insets.top + getVgap();//position for first row
        int availableRowWidth = target.getWidth() - insets.left - insets.right - getHgap();
        int rowHeight = 0;
        int remainingRowWidth = 0;
        Component currentComponent = null;
        currentIndex = 0;
        int x = 0;
        int count = target.getComponentCount();
        while (currentIndex < count) {
            index = currentIndex;//save the index where this row begins
            x = insets.left + getHgap();//position for first column
            int columnCount = 0;
            rowHeight = 0;
            remainingRowWidth = availableRowWidth;
            for (; currentIndex < count; currentIndex++) {
                currentComponent = target.getComponent(currentIndex);
                if (currentComponent.isVisible()) {
                    int currentWidth = currentComponent.getPreferredSize().width + getHgap();
                    if (remainingRowWidth >= currentWidth && columnCount < 2) {
                        int preferredHeight = currentComponent.getPreferredSize().height;
                        if (preferredHeight > rowHeight) {
                            rowHeight = preferredHeight;
                        }
                        currentComponent.setLocation(x, y);
                        remainingRowWidth -= currentWidth;
                        x += currentWidth;//position for next column
                        columnCount++;
                    } else {//row break
                        setSizesInRow(rowHeight, remainingRowWidth, target);//set sizes for this row
                        break;
                    }
                }
            }
            y += rowHeight + getVgap();//position for next row
        }
        setSizesInRow(rowHeight, remainingRowWidth, target);//set sizes for last row
        dim.width = x;
        dim.height = y;
        target.repaint();
    }
    private void setSizesInRow(final int rowHeight, final int remainingRowWidth, final Container target) {
        /* NOTE: "index" initially points to the first component of this row
           and "currentIndex" points to the first component of the next row */
        for (; index < currentIndex; index++) {
            Component component = target.getComponent(index);
            int preferredWidth = component.getPreferredSize().width;
            if (index >= currentIndex - 1) {
                preferredWidth += remainingRowWidth;//width of rightmost column
            }
            component.setSize(preferredWidth, rowHeight);
        }
    }
}
Download letzte Version: ListLayout
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
G LayoutManager Beliebige Anzahl von Panels für LayoutManager AWT, Swing, JavaFX & SWT 3
R Swing Welche LayoutManager sind die richtigen für mich? AWT, Swing, JavaFX & SWT 11
F Zeichnung einem JPanel im Layoutmanager zuweisen AWT, Swing, JavaFX & SWT 3
Z Swing Welcher Layoutmanager bei ScrollPane? AWT, Swing, JavaFX & SWT 4
F Welchen Layoutmanager verwenden? AWT, Swing, JavaFX & SWT 2
G Komponenten vergrößern sich nicht trotz Layoutmanager AWT, Swing, JavaFX & SWT 24
N Welcher LayoutManager AWT, Swing, JavaFX & SWT 16
Birke Swing Neue Swing LayoutManager: TOnion Projekt AWT, Swing, JavaFX & SWT 10
B Swing JLabel und LayoutManager AWT, Swing, JavaFX & SWT 20
F Swing Layoutmanager für Mittplatzierung ? AWT, Swing, JavaFX & SWT 6
B SWT Dynamische GUI (Layoutmanager?) AWT, Swing, JavaFX & SWT 2
J Welche(n) LayoutManager für große Gui? AWT, Swing, JavaFX & SWT 6
D Layoutmanager in Java Swing vs. Java AWT AWT, Swing, JavaFX & SWT 3
P Layoutmanager-Richtlinie ? AWT, Swing, JavaFX & SWT 8
J 2 Bereiche im Frame komplett nutzen - Welchen Layoutmanager? AWT, Swing, JavaFX & SWT 3
TheWhiteShadow Swing suche passenden LayoutManager AWT, Swing, JavaFX & SWT 8
SexyPenny90 Welcher LayoutManager erfüllt meine Bedingung AWT, Swing, JavaFX & SWT 7
C SWT LayoutManager AWT, Swing, JavaFX & SWT 2
L LayoutManager macht nichts AWT, Swing, JavaFX & SWT 19
S LayoutManager Welcher LayoutManager für dieses zweispaltige Layout? AWT, Swing, JavaFX & SWT 13
R Layoutmanager AWT, Swing, JavaFX & SWT 4
M Fenster aufteilen, aber mit welchem LayoutManager? AWT, Swing, JavaFX & SWT 10
G LayoutManager LayoutManager gesucht AWT, Swing, JavaFX & SWT 2
R Swing Variable Panelbreite ohne Layoutmanager AWT, Swing, JavaFX & SWT 6
R LayoutManager Problem mit setLayout(LayoutManager) AWT, Swing, JavaFX & SWT 9
F Anfängerfrage: Swing und LayoutManager AWT, Swing, JavaFX & SWT 4
V LayoutManager Eigener LayoutManager funktioniert nicht. AWT, Swing, JavaFX & SWT 5
N LayoutManager suche LayoutManager für Tabellenstruktur AWT, Swing, JavaFX & SWT 2
D LayoutManager JPanels ohne LayoutManager platzieren AWT, Swing, JavaFX & SWT 6
Ollek JTextField Verhalten mit LayoutManager AWT, Swing, JavaFX & SWT 8
B LayoutManager mischen keine gute Idee? AWT, Swing, JavaFX & SWT 9
hdi SWT Suche passenden LayoutManager AWT, Swing, JavaFX & SWT 5
C passender layoutmanager gesucht AWT, Swing, JavaFX & SWT 2
I Swing Positionieren von Panels mit layoutManager AWT, Swing, JavaFX & SWT 6
E Swing Suche LayoutManager AWT, Swing, JavaFX & SWT 5
E Layoutmanager mit fester Breite gesucht AWT, Swing, JavaFX & SWT 9
R Layoutmanager AWT, Swing, JavaFX & SWT 13
K Swing JInternalFrame und LayoutManager AWT, Swing, JavaFX & SWT 6
W LayoutManager Hell AWT, Swing, JavaFX & SWT 2
P JPanel: LayoutManager und trotzdem absolut positionieren? AWT, Swing, JavaFX & SWT 3
J eigener Layoutmanager? AWT, Swing, JavaFX & SWT 6
M JLabel mit Layoutmanager AWT, Swing, JavaFX & SWT 2
G Layoutmanager mit festem Gitter AWT, Swing, JavaFX & SWT 6
R getInsets ohne Layoutmanager AWT, Swing, JavaFX & SWT 7
R LayoutManager ähnlich BorderLayout, mit einer Ausnahme AWT, Swing, JavaFX & SWT 2
J LayoutManager der Elemente untereinander anordnet. AWT, Swing, JavaFX & SWT 11
F Der richtige Layoutmanager AWT, Swing, JavaFX & SWT 6
G LayoutManager und Abstand AWT, Swing, JavaFX & SWT 6
A LayoutManager-Wünsche AWT, Swing, JavaFX & SWT 16
T % von Komponenten unter Layoutmanager AWT, Swing, JavaFX & SWT 2
M Layoutmanager und Komponente AWT, Swing, JavaFX & SWT 2
F LayoutManager und Component.setVisible(boolean) AWT, Swing, JavaFX & SWT 2
G Fenster mit LayoutManager AWT, Swing, JavaFX & SWT 3
C Verschachtelung von JPanels mit verschiedenen LayoutManager AWT, Swing, JavaFX & SWT 4
T JInternalFrame Konflikt mit LayoutManager AWT, Swing, JavaFX & SWT 5
S JTextField ohne LayoutManager positionieren AWT, Swing, JavaFX & SWT 3
F PanelBounds an TextPaneBounds anpassen LayoutManager: Null AWT, Swing, JavaFX & SWT 2
B Welchen LayoutManager? AWT, Swing, JavaFX & SWT 17
S Wie funktioniert der LayoutManager? AWT, Swing, JavaFX & SWT 9
P Zeichnen + LayoutManager AWT, Swing, JavaFX & SWT 7
B Layoutmanager Tutorial AWT, Swing, JavaFX & SWT 15
M LayoutManager Informationen AWT, Swing, JavaFX & SWT 4
L LayoutManager ähnlich wie FlowLayout AWT, Swing, JavaFX & SWT 5
S Welchen Layoutmanager? AWT, Swing, JavaFX & SWT 6
D LayoutManager und JPanel AWT, Swing, JavaFX & SWT 9
J Welcher Layoutmanager? AWT, Swing, JavaFX & SWT 20
L Probleme mit Scrollbar und LayoutManager AWT, Swing, JavaFX & SWT 3
G Neuer LayoutManager AWT, Swing, JavaFX & SWT 3
T Swing Combox Popup vergroessert - Arrow nicht mehr vorhanden! AWT, Swing, JavaFX & SWT 4
M jfxrt.jar nicht vorhanden AWT, Swing, JavaFX & SWT 2
P Swing Nach removeAll() noch 1 Element vorhanden AWT, Swing, JavaFX & SWT 0
C AWT Fokus von Component entfernen, wenn kein anderes vorhanden AWT, Swing, JavaFX & SWT 4
Rudolf Swing Gridlayout und Grouper vorhanden? AWT, Swing, JavaFX & SWT 4
B Welche Font Family ist vorhanden? AWT, Swing, JavaFX & SWT 3
martinyyyy AWT Parameter erzeugen NullpointerException obwohl sie vorhanden sind? AWT, Swing, JavaFX & SWT 4
G JComboBox mit eigenem Model vorhanden, wie selektieren AWT, Swing, JavaFX & SWT 29
I Tastur eingabe geht nicht (wenn Button vorhanden) AWT, Swing, JavaFX & SWT 5
T SWT - Inhalt einer Shell erst nach Größenänderung vorhanden AWT, Swing, JavaFX & SWT 5
N Textfelder = Inhalt vorhanden && Jtable rendern AWT, Swing, JavaFX & SWT 8
TheWhiteShadow JavaFX ScrollPane nimmt nicht genug platz ein AWT, Swing, JavaFX & SWT 3
L JavaFX Anderer Text, wenn kein Platz ist. AWT, Swing, JavaFX & SWT 1
R Swing JPanels auf JFrame auf verfügbaren Platz aufblasen AWT, Swing, JavaFX & SWT 4
GenerationLost Bilder an bestimmten Platz einfügen/Objekte visualisieren AWT, Swing, JavaFX & SWT 1
Kenan89 Border nimmt Platz AWT, Swing, JavaFX & SWT 17
I Swing JLabel - Platz schaffen AWT, Swing, JavaFX & SWT 10
L LayoutManager Componenten über verfügbaren Platz strecken AWT, Swing, JavaFX & SWT 7
R Swing Ausnutzung von vorhandenem Platz AWT, Swing, JavaFX & SWT 13
F LayoutManager GridBagLayout nutzt Platz nicht AWT, Swing, JavaFX & SWT 2
T paintComponent() überschreiben: Platz für Border freihalten? AWT, Swing, JavaFX & SWT 6
T GridLayout, zu wenig Platz zwischen Widgets AWT, Swing, JavaFX & SWT 3
R das letzte JLabel in der Schleife will nicht an seinen Platz AWT, Swing, JavaFX & SWT 2
F Benötigter Platz von Komponenten AWT, Swing, JavaFX & SWT 3
J Schriftgröße aus vorhandenem Platz berechnen AWT, Swing, JavaFX & SWT 9
K JFreeChart: Platz zwischen Balken AWT, Swing, JavaFX & SWT 3
M zur Verfügung stehenden Platz ausfüllen AWT, Swing, JavaFX & SWT 5
Z bei kleinen Buttons verschwindet Schrift, obwohl Platz wäre AWT, Swing, JavaFX & SWT 5

Ähnliche Java Themen

Neue Themen


Oben