GridBagLayout Panels Ausrichtung

7

Ich habe ein kleines Problem mit dem GridBag Layout Manager. Ich versuche 9 Panels wie folgt anzuzeigen:

Um dies zu tun, habe ich das Gitter wie folgt getrennt:

Für die Panels 1 bis 7 gibt es kein Problem, sie erscheinen so, wie ich will. Aber das Problem beginnt mit den Panels S8 und S9 . Wie Sie sehen können, nehmen die S8 und S9 die Hälfte des Frames ein, aber ich kann es nicht so anzeigen lassen. Der S8 endet am Anfang von S4 , und der S9 beginnt am Ende von S4 , ich kann nicht mit dem halben Leerzeichen umgehen.

Nur so habe ich herausgefunden, dass das S8 und S9 Panel in ein anderes Panel mit der ganzen Frame-Breite eingefügt wird - aber es muss eine korrekte Möglichkeit geben, diese beiden Panels anzuzeigen, ohne sie in ein anderes Panel zu setzen!

Hier ist der Code:

%Vor%

Irgendwelche Ideen und Vorschläge sind willkommen!

    
Dar-Jee 07.02.2013, 16:02
quelle

7 Antworten

9

Gute Frage. Es hat mich wenig gebraucht, um es zu knacken, aber ich habe es verstanden. Normalerweise hätte ich die Sektionen 1-7 in einem oberen Panel und die Sektionen 8-9 in einem unteren Panel platziert, aber ich mochte die Herausforderung von 1 Panel mit GBL. [gelangweilt]

Das Problem ist, dass Abschnitt 4 (Spaltenindizes 4 und 5) für GBL nicht gut definiert ist, daher weiß Abschnitt 8 nicht, wie weit es hinausgehen soll, um seine fünfte Spalte (Index 4) zu überdecken nach Spaltenindex 3.

Also habe ich zwei nullhöhige Abstandhalter in die Spalten eingefügt, die Abschnitt 4 ausmachen, und es hat funktioniert. Kommentieren Sie die beiden mit SPACERS markierten Zeilen, um zu sehen, was ich meine:

BEARBEITEN : Fix hinzugefügt von @SheridanVespo

vorgeschlagen %Vor%     
splungebob 07.02.2013, 18:41
quelle
4

Die akzeptierte Antwort ist ansprechend, verursacht jedoch bei der Größenänderung des Rahmens eine Verbreiterung von Abschnitt 4 schneller als die flankierenden Bereiche . Diese Variation platziert die Platten 8 & amp; 9 in einem separaten Unterfenster von BoxLayout .

%Vor%     
trashgod 09.02.2013 02:34
quelle
2
___ qstnhdr ___ GridBagLayout Panels Ausrichtung ___ answer 14755942 ___

Ich war nie ein großer Fan von GridBagLayout. Also würde ich Ihre GUI in mehrere Panels zerlegen und würde wahrscheinlich mehrere GridLayout verwenden, um zu erreichen, was Sie wollen. Etwas wie:

%Vor%     
___ qstntxt ___

Ich habe ein kleines Problem mit dem GridBag Layout Manager. Ich versuche 9 Panels wie folgt anzuzeigen:

Um dies zu tun, habe ich das Gitter wie folgt getrennt:

Für die Panels 1 bis 7 gibt es kein Problem, sie erscheinen so, wie ich will. Aber das Problem beginnt mit den Panels %code% und %code% . Wie Sie sehen können, nehmen die %code% und %code% die Hälfte des Frames ein, aber ich kann es nicht so anzeigen lassen. Der %code% endet am Anfang von %code% , und der %code% beginnt am Ende von %code% , ich kann nicht mit dem halben Leerzeichen umgehen.

Nur so habe ich herausgefunden, dass das %code% und %code% Panel in ein anderes Panel mit der ganzen Frame-Breite eingefügt wird - aber es muss eine korrekte Möglichkeit geben, diese beiden Panels anzuzeigen, ohne sie in ein anderes Panel zu setzen!

Hier ist der Code:

%Vor%

Irgendwelche Ideen und Vorschläge sind willkommen!

    
___ answer14758551 ___

Gute Frage. Es hat mich wenig gebraucht, um es zu knacken, aber ich habe es verstanden. Normalerweise hätte ich die Sektionen 1-7 in einem oberen Panel und die Sektionen 8-9 in einem unteren Panel platziert, aber ich mochte die Herausforderung von 1 Panel mit GBL. [gelangweilt]

Das Problem ist, dass Abschnitt 4 (Spaltenindizes 4 und 5) für GBL nicht gut definiert ist, daher weiß Abschnitt 8 nicht, wie weit es hinausgehen soll, um seine fünfte Spalte (Index 4) zu überdecken nach Spaltenindex 3.

Also habe ich zwei nullhöhige Abstandhalter in die Spalten eingefügt, die Abschnitt 4 ausmachen, und es hat funktioniert. Kommentieren Sie die beiden mit SPACERS markierten Zeilen, um zu sehen, was ich meine:

BEARBEITEN : Fix hinzugefügt von @SheridanVespo

vorgeschlagen %Vor%     
___ answer14756010 ___

Für die S9-Komponente lautet Ihr Code

%Vor%

Da das Koordinatensystem bei 0 und nicht bei 1 beginnt, schlage ich vor, dass der Code

ist %Vor%     
___ answer14784349 ___

Die akzeptierte Antwort ist ansprechend, verursacht jedoch bei der Größenänderung des Rahmens eine Verbreiterung von Abschnitt 4 schneller als die flankierenden Bereiche . Diese Variation platziert die Platten 8 & amp; 9 in einem separaten Unterfenster von %code% .

%Vor%     
___ tag123java ___ Java (nicht zu verwechseln mit JavaScript oder JScript oder JS) ist eine universelle objektorientierte Programmiersprache, die für die Verwendung in Verbindung mit der Java Virtual Machine (JVM) entwickelt wurde. "Java-Plattform" ist der Name für ein Computersystem, auf dem Tools zum Entwickeln und Ausführen von Java-Programmen installiert sind. Verwenden Sie dieses Tag für Fragen, die sich auf die Java-Programmiersprache oder Java-Plattform-Tools beziehen. ___ answer 14755967 ___

Im Allgemeinen erstelle und füge ich die Komponenten eines GridBagLayouts in Y-, X-Positionsreihenfolge hinzu. Ich weiß nicht, ob das nötig ist, aber es erleichtert mir die Diagnose von Problemen.

Hier ist, was ich für Ihr Raster gefunden habe.

%Vor%     
___ tag123jpanel ___ JPanel ist ein Container im Java Swing Framework, der das benutzerdefinierte Rendering mit Layout-Managern ermöglicht. JPanels können für Flexibilität geschachtelt werden. Es gibt auch ein jQuery-Plugin mit demselben Namen, das Akkordeons, Tabs und Feldsets aus der einfachen Container-Markierung bereitstellt. ___ answer14758324 ___

Ich habe versucht, mit %code% zu überprüfen, wie es funktioniert. Aber hier nur posten .. :) Dieser Prozess verwendet mehrere Panels ineinander. Sie können diesen Ansatz versuchen, wenn dieses Beispiel bequem ist.

%Vor%     
___ answer14757600 ___

Für die letzten zwei %code% würde ich vorschlagen, dass Sie sie einfach zu einer neuen %code% mit %code% hinzufügen und diese %code% mit der %code% auf die %code% mit der% co_de setzen %. Sehen Sie sich das Codebeispiel an, das tatsächlich zu der Ausgabe geführt hat, die Sie erwartet haben:

%Vor%

Hier ist die Ausgabe des obigen Codes:

    
___ tag123swing ___ Swing ist das wichtigste Toolkit für Benutzeroberflächen in Java und wird mit dem Standard-Java-SDK ausgeliefert. Es ist im Paket javax.swing enthalten. ___ tag123gridbaglayout ___ Der GridBagLayout ist ein flexibler Java Swing-Layoutmanager, der Komponenten vertikal, horizontal oder entlang ihrer Grundlinie ausrichtet, ohne dass die Komponenten die gleiche Größe haben müssen. Jedes GridBagLayout-Objekt verwaltet ein dynamisches, rechteckiges Gitter aus Zellen, wobei jede Komponente eine oder mehrere Zellen belegt, die als Anzeigebereich bezeichnet werden. ___
camickr 07.02.2013 16:25
quelle
2

Für die letzten zwei JPanel würde ich vorschlagen, dass Sie sie einfach zu einer neuen JPanel mit GridLayout hinzufügen und diese JPanel mit der GridLayout auf die JPanel mit der% co_de setzen %. Sehen Sie sich das Codebeispiel an, das tatsächlich zu der Ausgabe geführt hat, die Sie erwartet haben:

%Vor%

Hier ist die Ausgabe des obigen Codes:

    
nIcE cOw 07.02.2013 17:48
quelle
1
___ qstnhdr ___ GridBagLayout Panels Ausrichtung ___ answer 14755942 ___

Ich war nie ein großer Fan von GridBagLayout. Also würde ich Ihre GUI in mehrere Panels zerlegen und würde wahrscheinlich mehrere GridLayout verwenden, um zu erreichen, was Sie wollen. Etwas wie:

%Vor%     
___ qstntxt ___

Ich habe ein kleines Problem mit dem GridBag Layout Manager. Ich versuche 9 Panels wie folgt anzuzeigen:

Um dies zu tun, habe ich das Gitter wie folgt getrennt:

Für die Panels 1 bis 7 gibt es kein Problem, sie erscheinen so, wie ich will. Aber das Problem beginnt mit den Panels %code% und %code% . Wie Sie sehen können, nehmen die %code% und %code% die Hälfte des Frames ein, aber ich kann es nicht so anzeigen lassen. Der %code% endet am Anfang von %code% , und der %code% beginnt am Ende von %code% , ich kann nicht mit dem halben Leerzeichen umgehen.

Nur so habe ich herausgefunden, dass das %code% und %code% Panel in ein anderes Panel mit der ganzen Frame-Breite eingefügt wird - aber es muss eine korrekte Möglichkeit geben, diese beiden Panels anzuzeigen, ohne sie in ein anderes Panel zu setzen!

Hier ist der Code:

%Vor%

Irgendwelche Ideen und Vorschläge sind willkommen!

    
___ answer14758551 ___

Gute Frage. Es hat mich wenig gebraucht, um es zu knacken, aber ich habe es verstanden. Normalerweise hätte ich die Sektionen 1-7 in einem oberen Panel und die Sektionen 8-9 in einem unteren Panel platziert, aber ich mochte die Herausforderung von 1 Panel mit GBL. [gelangweilt]

Das Problem ist, dass Abschnitt 4 (Spaltenindizes 4 und 5) für GBL nicht gut definiert ist, daher weiß Abschnitt 8 nicht, wie weit es hinausgehen soll, um seine fünfte Spalte (Index 4) zu überdecken nach Spaltenindex 3.

Also habe ich zwei nullhöhige Abstandhalter in die Spalten eingefügt, die Abschnitt 4 ausmachen, und es hat funktioniert. Kommentieren Sie die beiden mit SPACERS markierten Zeilen, um zu sehen, was ich meine:

BEARBEITEN : Fix hinzugefügt von @SheridanVespo

vorgeschlagen %Vor%     
___ answer14756010 ___

Für die S9-Komponente lautet Ihr Code

%Vor%

Da das Koordinatensystem bei 0 und nicht bei 1 beginnt, schlage ich vor, dass der Code

ist %Vor%     
___ answer14784349 ___

Die akzeptierte Antwort ist ansprechend, verursacht jedoch bei der Größenänderung des Rahmens eine Verbreiterung von Abschnitt 4 schneller als die flankierenden Bereiche . Diese Variation platziert die Platten 8 & amp; 9 in einem separaten Unterfenster von %code% .

%Vor%     
___ tag123java ___ Java (nicht zu verwechseln mit JavaScript oder JScript oder JS) ist eine universelle objektorientierte Programmiersprache, die für die Verwendung in Verbindung mit der Java Virtual Machine (JVM) entwickelt wurde. "Java-Plattform" ist der Name für ein Computersystem, auf dem Tools zum Entwickeln und Ausführen von Java-Programmen installiert sind. Verwenden Sie dieses Tag für Fragen, die sich auf die Java-Programmiersprache oder Java-Plattform-Tools beziehen. ___ answer 14755967 ___

Im Allgemeinen erstelle und füge ich die Komponenten eines GridBagLayouts in Y-, X-Positionsreihenfolge hinzu. Ich weiß nicht, ob das nötig ist, aber es erleichtert mir die Diagnose von Problemen.

Hier ist, was ich für Ihr Raster gefunden habe.

%Vor%     
___ tag123jpanel ___ JPanel ist ein Container im Java Swing Framework, der das benutzerdefinierte Rendering mit Layout-Managern ermöglicht. JPanels können für Flexibilität geschachtelt werden. Es gibt auch ein jQuery-Plugin mit demselben Namen, das Akkordeons, Tabs und Feldsets aus der einfachen Container-Markierung bereitstellt. ___ answer14758324 ___

Ich habe versucht, mit %code% zu überprüfen, wie es funktioniert. Aber hier nur posten .. :) Dieser Prozess verwendet mehrere Panels ineinander. Sie können diesen Ansatz versuchen, wenn dieses Beispiel bequem ist.

%Vor%     
___ answer14757600 ___

Für die letzten zwei %code% würde ich vorschlagen, dass Sie sie einfach zu einer neuen %code% mit %code% hinzufügen und diese %code% mit der %code% auf die %code% mit der% co_de setzen %. Sehen Sie sich das Codebeispiel an, das tatsächlich zu der Ausgabe geführt hat, die Sie erwartet haben:

%Vor%

Hier ist die Ausgabe des obigen Codes:

    
___ tag123swing ___ Swing ist das wichtigste Toolkit für Benutzeroberflächen in Java und wird mit dem Standard-Java-SDK ausgeliefert. Es ist im Paket javax.swing enthalten. ___ tag123gridbaglayout ___ Der GridBagLayout ist ein flexibler Java Swing-Layoutmanager, der Komponenten vertikal, horizontal oder entlang ihrer Grundlinie ausrichtet, ohne dass die Komponenten die gleiche Größe haben müssen. Jedes GridBagLayout-Objekt verwaltet ein dynamisches, rechteckiges Gitter aus Zellen, wobei jede Komponente eine oder mehrere Zellen belegt, die als Anzeigebereich bezeichnet werden. ___
Gilbert Le Blanc 07.02.2013 16:26
quelle
1

Für die S9-Komponente lautet Ihr Code

%Vor%

Da das Koordinatensystem bei 0 und nicht bei 1 beginnt, schlage ich vor, dass der Code

ist %Vor%     
fredmanglis 07.02.2013 16:28
quelle
1

Ich habe versucht, mit BorderLayout zu überprüfen, wie es funktioniert. Aber hier nur posten .. :) Dieser Prozess verwendet mehrere Panels ineinander. Sie können diesen Ansatz versuchen, wenn dieses Beispiel bequem ist.

%Vor%     
Amarnath 07.02.2013 18:27
quelle

Tags und Links