Gemischte Ausrichtung mit Java Swing Grouplayout
-
28-09-2019 - |
Frage
Ich versuche, ein GUI-Fenster in meiner Anwendung zu erstellen. Was ich versuche, ein Fenster, mit ein paar Tasten an der Spitze zu tun ist, haben und einen großen Textbereich. So etwas wie folgt aus:
+--------------------------------------------------+
| [button1] [button2] [button3] |
| +----------------------------------------------+ |
| | text area | |
| | | |
| | | |
| | | |
| +----------------------------------------------+ |
+--------------------------------------------------+
Ich bin fast da, mit Grouplayout:
layout.setHorizontalGroup(
layout.createParallelGroup()
.addGroup(layout.createSequentialGroup()
.addComponent(button1)
.addComponent(button2))
.addComponent(closeWindow))
.addComponent(textarea1)
);
layout.setVerticalGroup(
layout.createSequentialGroup()
.addGroup(layout.createParallelGroup()
.addComponent(button1)
.addComponent(button2)
.addComponent(button3))
.addComponent(textarea)
);
Das Problem ist, dass diese endet mit button3 nach links ausgerichtet sind, mit den beiden anderen. Ich kann nicht scheinen, um herauszufinden, wie ich die Ausrichtung auf nur, dass eine Taste festlegen. Ich kann tun, auf der gesamten Buttonleiste GroupLayout.Alignment.TRAILING, aber das trifft alle 3 Tasten, die auch ganz ist nicht richtig.
Also, was ist der richtige Ansatz? Da die Ausrichtung für die parallelen Gruppen gilt nur, glaube ich nicht, ein HorizontalGroup mit zwei aufeinanderfolgenden Gruppen darin, die helfen?
Was bin ich?
Lösung
eine Lücke in der sequentiellen Gruppe hinzufügen. Verläßt Ihre horizontale Gruppe wie:
layout.setVerticalGroup(
layout.createSequentialGroup()
.addGroup(layout.createParallelGroup()
.addComponent(button1)
.addComponent(button2)
.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(button3))
.addComponent(textarea)
);
Die Lücke mit diesen Parametern fungiert als „Feder“, den gesamten verfügbaren Platz einnimmt.
Andere Tipps
Versuchen Sie:
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 1, Short.MAX_VALUE)
nach der zweiten Taste. Die MAX_VALUE bewirkt, dass die Lücke so viel wie nötig erweitern.
Sie möchten addPreferredGap () verwenden, die auf aufeinanderfolgenden Gruppen nur zur Verfügung steht. Der folgende Code gibt Ihnen das gewünschte Layout.
layout.setHorizontalGroup(
layout.createParallelGroup()
.addGroup( layout.createSequentialGroup()
.addComponent( button1 )
.addComponent( button2 )
.addPreferredGap( LayoutStyle.ComponentPlacement.RELATED, GroupLayout.PREFERRED_SIZE, Short.MAX_VALUE )
.addComponent( button3 ) )
.addComponent( textArea )
);
layout.setVerticalGroup(
layout.createSequentialGroup()
.addGroup( layout.createParallelGroup()
.addComponent( button1 )
.addComponent( button2 )
.addComponent( button3 ) )
.addComponent( textArea )
);