Как я могу установить максимум или предпочтительный размер JPanel, который использует Gridlayout?

StackOverflow https://stackoverflow.com/questions/2242578

Вопрос

У меня были проблемы с использованием очень простой кадры, содержащей два 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!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top