Настройка 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);
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
вместо того, чтобы устанавливать размеры для рамки.