Как я могу установить максимальный или предпочтительный размер JPanel, который использует gridLayout? - PullRequest
1 голос
/ 11 февраля 2010

У меня была проблема с использованием очень простой рамки, содержащей два JPanel.Проблема в макете Центра JPanel, который содержит четыре JButton.Как я могу установить лучший размер для кнопок или непосредственно для JPanel, который использует GridLayout.На картинке проблема:

alt http://img42.imageshack.us/img42/4601/horrible.jpg!

Вот код: `JFrame window = new JFrame (" Horrible! 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);`

Какое хорошее решение?

С уважением

Ответы [ 2 ]

2 голосов
/ 11 февраля 2010

К сожалению, сетка не имеет отношения к предпочтительным размерам.Но все же, если вы хотите придерживаться макета сетки, вы можете попробовать что-то вроде этого:

    public static JComponent wrap(JComponent comp)
    {
        JPanel panel = new JPanel();
        panel.add(comp);
        return panel;
    }

И затем вместо добавления direclty в prova добавьте вот так:

            prova.add(wrap(plus)); 
            prova.add(wrap(minus)); 
            prova.add(wrap(per)); 
            prova.add(wrap(divide));

ПротестированоРаботает отлично !!Хотя есть и другие лучшие способы

0 голосов
/ 11 февраля 2010

Вот что случилось со мной: Он определенно прикреплен к верхнему краю сетки.

альтернативный текст http://img96.imageshack.us/img96/9431/stillnot.jpg

Даже если в этом случае в методе обтекания я могу установить предпочитаемый размер кнопок / композиции, каждая кнопка находится на своем краю. Как насчет других решений. Как бы вы расположили кнопки для калькулятора? С наилучшими пожеланиями и спасибо Angain!

...