Domanda

Voglio aggiungere un JSeparator verticale tra due componenti utilizzando un GridBagLayout. Il codice che ho è il seguente:

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);
}

Ma la JSeperator non mostra, tutte le idee?

Grazie

È stato utile?

Soluzione

Si potrebbe provare a impostare la larghezza preferito per il separatore:

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

Quindi, fanno GridBagLayout utilizzare su tutta l'altezza disponibile per il separatore:

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

Altri suggerimenti

Tratto da Sun Guida per JSeparator:

  

Nella maggior parte delle implementazioni, verticale   separatore ha un'altezza desiderata di 0,   ed un separatore orizzontale ha un   larghezza preferita di 0. Questo significa   separatore non è visibile a meno che non   o impostare la dimensione preferita o mettere   in sotto il controllo di un layout   gestore come BorderLayout o   BoxLayout che si estende per riempire   la sua area di visualizzazione disponibile.

     

Il separatore verticale ha un po '   di larghezza (e l'orizzontale un po 'di   altezza), così si dovrebbe vedere un pò di spazio   in cui il separatore è. in ogni caso, il   linea di divisione effettivo non è disegnata   a meno che la larghezza e l'altezza sono entrambi   diverso da zero.

Forse si dovrebbe impostare vincoli giusti?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top