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?

War es hilfreich?

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 )
    );
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top