2013-02-27 2 views
0

У меня есть код в этом формате, но jpanels не прослушивают размер, который я установил. Все три панели имеют одинаковый размер, когда я запускаю код. Есть ли способ их скорректировать?Регулировка JPanels для коррекции размера

JPanel mainpanel = new JPanel(mainPanel,BoxLayout.Y_AXIS); 
JPanel tablepanel1 = new JPanel(); 
tablepanel1.setSize(900,400); 
JPanel selectionpanel = new JPanel(new GridBagLayout()); 
selectionpanel.setSize(900,100); 
JPanel tablepanel2 = new JPanel(); 
tablepanel2.setSize(900,400); 

mainpanel.add(tablepanel1); 
mainpanel.add(selectionpanel); 
mainpanel.add(tablepanel2); 

frame.add(mainpanel); 
frame.setSize(900,900); 
+0

Если вы хотите абсолютное позиционирование в Swing, я бы сказал, что вы не можете использовать диспетчер компоновки для 'mainPanel': http://docs.oracle.com/javase/tutorial/uiswing/layout/none.html – millimoose

+0

Используйте 'setPreferredSize' вместо' setSize'. Кроме того, 'BorderLayout' не имеет члена, называемого' Y_AXIS' - возможно, вы имеете в виду 'BoxLayout'? –

ответ

1

вы имели в виду использовать BoxLayout для mainpanel:

JPanel mainpanel = new JPanel(); 
mainpanel.setLayout(new BoxLayout(mainpanel, BoxLayout.Y_AXIS)); 

Этот менеджер компоновки слушает только предпочтительные размеры, а не размер компонента. Лучший способ переопределить getPreferredSize:

JPanel selectionpanel = new JPanel() { 
    @Override 
    public Dimension getPreferredSize() { 
     return new Dimension(900, 400); 
    } 
}; 

Также лучше использовать JFrame#pack вместо того, чтобы устанавливать размеры для кадра.

+0

извините, да, это boxLayout, но я попытался использовать метод, который вы предложили, но без изменений. Мне нужно установить размер в jframe, потому что сначала кадр будет пустым с помощью строки меню, и как только действие будет выбрано, панели будут добавлены, а кадр не увеличит его размер. – vijay

+0

Я тестировал это и работает. Вы переопределили 'getPreferredSize' для 3 панелей:' tablepanel1', 'tablepanel2' &' selectionpanel'? – Reimeus

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