2015-05-03 2 views
0

Почему мои ограничения для моих кнопок не работают? Я смотрел на Java Docs и делаю то же самое, что делают уроки, но для меня кнопки остаются неизменными независимо от того, какие gridx, y, width или fill я использую. Есть идеи? Вот мой код:Кнопки JFrame и GridBagConstraints

class MyWindow 
{ 
public static void main(String [] arg) 
{ 
    MyJFrame f = new MyJFrame("My GUI 2015"); 
    f.setVisible(true); 
    f.setSize(10, 20); 
    f.add(f.p); 
} 
} 

и

public class MyJFrame extends JFrame { 

public JPanel p; 
JButton close = new JButton("close"); 
JButton drawing = new JButton("drawing"); 
JButton image = new JButton("image"); 
JButton browser = new JButton("browser"); 

public MyJFrame(String title) { 
    super(title); 
    p = new JPanel(); 
    buildButtons(); 
} 

void buildButtons() {  
    GridBagConstraints c = new GridBagConstraints(); 

    c.insets = new Insets(0,40,0,150); 
    c.gridx = 0; 
    c.gridy = 0; 
    p.add(drawing, c); 
    c.gridx = 2; 
    c.gridy = 0; 
    p.add(close, c); 
    c.insets = new Insets(50,225,50,150); 
    c.gridx = 0; 
    c.gridy = 1; 
    p.add(image, c); 
    c.insets = new Insets(0,125,0,125); 
    c.gridx = 0; 
    c.gridy = 100; 
    c.gridwidth = 3; 
    c.fill = GridBagConstraints.HORIZONTAL; 
    p.add(browser, c); 
} 
} 
+0

Где вы указать LayoutManager например, 'GridBagLayout'? – copeg

ответ

4

LayoutManager для контейнера не указано в текущем коде (по умолчанию для JPanel является FlowLayout). Если вы хотите использовать GridBagLayout на контейнере, вы должны явно указать LayoutManager:

p = new JPanel(new GridBagLayout()); 
//or 
p.setLayout(new GridBagLayout()); 
+1

(+1). Кроме того, прочитайте учебник Swing по [Как использовать GridBagLayout] (http://docs.oracle.com/javase/tutorial/uiswing/layout/gridbag.html) для получения дополнительной информации и примеров. В примерах также будет показано, как лучше структурировать свой код, чтобы компоненты Swing создавались в потоке Dispatch Event, что вы всегда должны делать, чтобы предотвратить случайные ошибки. – camickr

 Смежные вопросы

  • Нет связанных вопросов^_^