Frage

Ich möchte eine vertikale JSeparator zwischen zwei Komponenten hinzuzufügen, um einen GridBagLayout verwenden. Der Code, den ich habe, ist wie folgt:

public MainWindowBody(){
    setLayout(new GridBagLayout());

    JPanel leftPanel = new InformationPanel();
    JPanel rightPanel = new GameSelectionPanel();

    JSeparator sep = new JSeparator(JSeparator.VERTICAL);
    GridBagConstraints gbc = new GridBagConstraints();

    gbc.gridx = 0;
    gbc.gridy = 0;
    gbc.anchor = GridBagConstraints.NORTH;

    add(leftPanel,gbc);

    gbc.gridx = 1;
    gbc.gridy = 0;
    gbc.fill = GridBagConstraints.VERTICAL;

    add(sep,gbc);

    gbc.gridx = 2;
    gbc.gridy = 0;
    gbc.fill = GridBagConstraints.NONE;

    add(rightPanel,gbc);
}

Aber der JSeperator zeigt nicht, irgendwelche Ideen?

Danke

War es hilfreich?

Lösung

Sie könnten versuchen, die bevorzugte Breite für den Separator zu setzen:

sep.setPreferredSize(new Dimension(5,1));

Dann machen GridBagLayout all verfügbare Höhe für den Separator aufbrauchen:

gbc.fill = GridBagConstraints.VERTICAL;
gbc.weighty = 1;

Andere Tipps

Genommen von Sun Leitfaden für JSeparator:

  

In den meisten Implementierungen eine vertikale   Separator weist eine bevorzugte Höhe von 0,   und ein horizontaler Separator weist eine   bevorzugte Breite von 0. Dies bedeutet, a   Separator ist nicht sichtbar, es sei denn, Sie   entweder eingestellt seine bevorzugte Größe oder setzen   es unter der Kontrolle eines Layouts   Manager wie Border oder   BoxLayout, die es erstreckt sich zu füllen   ihr zur Verfügung stehenden Anzeigebereich.

     

Der vertikale Trenn tut ein bisschen haben   die Breite (und die horizontal ein wenig   Höhe), so sollten Sie etwas Platz sehen   wobei der Separator. Allerdings ist die   Ist Trennlinie nicht gezeichnet   es sei denn, die Breite und Höhe sind beide   Nicht-Null.

Vielleicht sollten Sie mit der rechten Randbedingungen festgelegt?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top