2012-12-13 18 views
8

JAVA programlarını nasıl yapacağımı öğrenmeye çalışıyorum ve Swing ile çalışıyorum. Pencerenin sol üst köşesine bir düğme yerleştirmeye çalışıyorum ve üst merkeze gitmeye devam ediyor.Düğmelerde java kullanılarak belirli bir konuma yerleştirme

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

Neyi yanlış yapıyorum ya da bunu yapmanın daha iyi bir yolu var mı? Eğer

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

'frame.setDefaultCloseOperation (3);' Sihirli sayıları kullanmayın. J2SE, bu değerler için tanımlayıcı sabitler olarak adlandırılmıştır. –

cevap

2

yerine

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

yardım edin GridBagConstraints:

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

Sadece sahip olduğunuz gibi Bir etkili 'hücre' bir çapa kullanmanız ve Y ekseni içinde hareket etmesini sağlamak için JButton için weighty'u ayarlamanız gerekir.

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

Ayrıca ben NONE için fill ayarını olacaktır:

gbc.fill = GridBagConstraints.NONE; 

düğmesi panelin tüm genişliğini işgal etmeyecek şekilde. (2 = HORIZONTAL doldurun).

7

kullanılırsa Kullanılacak GridBagLayout için JPanel düzenini ayarlamak gerekir ne olacağını

İlgili konular