2012-12-13 13 views
8

Sto cercando di imparare come creare programmi JAVA e sto lavorando con Swing. Sto provando a posizionare un pulsante nell'angolo in alto a sinistra della finestra e continua fino al centro in alto.Posizionamento pulsanti in una posizione specificata utilizzando swing in java

public void createGUI(){ 
    JFrame frame = new JFrame("My Project"); 
    frame.setDefaultCloseOperation(3); 
    frame.setSize(400, 350); 
    frame.setVisible(true); 

    JPanel panel = new JPanel(); 

    frame.add(panel); 

    addButtonGUI(panel, new JButton(), "test", 1, 1); 
} 

public void addButtonGUI(JPanel panel, JButton button, String text, int x, int y){ 
    GridBagConstraints gbc = new GridBagConstraints(); 
    button.setText(text); 
    button.setEnabled(true); 
    gbc.gridx = x; 
    gbc.gridy = y; 
    gbc.gridwidth = 2; 
    gbc.weightx = 1.0D; 
    gbc.fill = 2; 
    panel.add(button, gbc); 
} 

Cosa sto sbagliando o c'è un modo migliore per farlo? Si prega di aiutare

+1

'frame.setDefaultCloseOperation (3);' Non utilizzare numeri magici. J2SE ha definito in modo descrittivo le costanti per questi valori. –

risposta

2

invece di

addButtonGUI(panel, new JButton(), "test", 1, 1); 
} 

che cosa accadrebbe se si è utilizzato

addButtonGUI(panel, new JButton(), "test", 0, 0); 
} 
7

È necessario impostare il layout del JPanel-GridBagLayout utilizzare GridBagConstraints:

JPanel panel = new JPanel(new GridBagLayout()); 

Anche come tu hai solo una "cella" efficace è necessario utilizzare un'ancora e impostare weighty per JButton per consentire il movimento sull'asse Y.

gbc.anchor = GridBagConstraints.NORTHWEST; 
gbc.weighty = 1.0; 

Inoltre vorrei impostare l'impostazione fill-NONE:

gbc.fill = GridBagConstraints.NONE; 

in modo che il pulsante non occupa l'intera larghezza del pannello. (2 = ORIZZONTALE riempimento).

Problemi correlati