Как я могу установить максимум или предпочтительный размер JPanel, который использует Gridlayout?
-
19-09-2019 - |
Вопрос
У меня были проблемы с использованием очень простой кадры, содержащей два JPanel. Проблема заключается в макете центра JPanel, который содержит четыре Jbutton. Как я могу установить лучший размер для кнопок или непосредственно для JPanel, который использует Gridlayout. На картинке проблема:
alt http://img42.imageshack.us/img42/4601/horrible.jpg !
Здесь код: `jframe window = new jframe (" ужасно! LOL ");
JTextField textField = new JTextField("");
textField.setPreferredSize(new Dimension(200,20));
JPanel textPanel = new JPanel(new FlowLayout(FlowLayout.CENTER));
textPanel.add(textField);
window.add(textPanel, BorderLayout.NORTH);
JButton plus = new JButton("+");
//plus.setPreferredSize(new Dimension(50,50)); nothing would change
JButton minus = new JButton("-");
JButton per = new JButton("x");
JButton divide = new JButton("/");
JPanel prova = new JPanel(new GridLayout(2,2,10,10));
Dimension d = new Dimension(20,20);
prova.setMaximumSize(d); // nothing changed!
prova.add(plus);
prova.add(minus);
prova.add(per);
prova.add(divide);
window.add(prova, BorderLayout.CENTER);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setSize(250,300);
window.setResizable(false);
window.setVisible(true);`
Что хорошее решение?
С уважением
Решение
К сожалению, Gridlayout Desist Cousted Предпочтительные размеры. Но все же, если вы хотите придерживаться сетки, вы можете попробовать что -то вроде этого:
public static JComponent wrap(JComponent comp)
{
JPanel panel = new JPanel();
panel.add(comp);
return panel;
}
А потом вместо того, чтобы добавить в Пробу, добавить так:
prova.add(wrap(plus));
prova.add(wrap(minus));
prova.add(wrap(per));
prova.add(wrap(divide));
Протестировано, работает идеально !! Хотя есть и другие лучшие способы
Другие советы
Вот что со мной случилось: это определенно прикреплено к верхнему краю сетки.
Alt Text http://img96.imageshack.us/img96/9431/stillnot.jpg
Даже если в этом случае, в методе обертывания я могу установить предпочтительный раздел кнопок/Comp, все кнопки находятся на своем краю. Как насчет других решений. Как бы вы поместили кнопки для калькулятора? С уважением и спасибо Anhain!