Domanda

Sto solo cercando di aggiungere 3 pulsanti verticali centrati a un GridBaglayout in Java Swing. In questo momento credo che la dimensione della griglia predefinita sia 3x3. Volevo sapere se posso cambiarlo e aggiungere più colonne e righe. Voglio semplicemente realizzare 3 butoni equidistanti centrati in un riquadro.

    pane.setLayout(new GridLayout(10,1));
    // Insert a space before the first button
    for (int i = 1; i < 6; i++ ){
        pane.add(new JLabel(""));
    }
    pane.add(new Button("1"));
    pane.add(new Button("2"));
        pane.add(new Button("3"));
    // Insert a space after the last button
    pane.add(new JLabel(""));

Questa è stata la soluzione finale grazie a tutti!

È stato utile?

Soluzione

Sono d'accordo con @chris a GridLayout Sarebbe più facile:

myPanel.setLayout(new GridLayout(5,1));
// Insert a space before the first button
add(new JLabel(""));
add(new Button("1"));
add(new Button("2"));
add(new Button("3"));
// Insert a space after the last button
add(new JLabel(""));

Altri suggerimenti

Basta aggiungere più valori agli attributi pesi. Questo gli dice come disporre la griglia - 0 significa usare solo lo spazio necessario, quindi il resto dello spazio è diviso in base ai pesi indicati.

GridBagLayout gbl = new GridBagLayout();
...
gbl.columnWeights = new double[] {1.0, 1.0, 1.0, 1.0, Double.MIN_VALUE};
gbl.rowWeights = new double[] {1.0, 1.0, 1.0, 1.0, Double.MIN_VALUE};
...
contentPane.setLayout(gbl_contentPane);

E poi dai i tuoi articoli GridBagConstraints insieme a gridx e gridy Impostare in modo appropriato (da 0) per le nuove colonne/righe:

GridBagConstraints gbc = new GridBagConstraints();
...
gbc.gridx = 3;
gbc.gridy = 3;
...
contentPane.add(textFieldName, gbc_textFieldName);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top