Проблема в настройке макета - PullRequest
2 голосов
/ 09 сентября 2011

Я сделал JFrame, и внутри этой рамки есть панель, на которой я поместил различные контейнеры, используя GridBagLayout.Я установил макет JFrame равным BorderLayout и добавил панель в BorderLayout.WEST.Я хочу показать контейнеры этой панели в верхнем левом углу.Как я могу это сделать?

Даже если я пытаюсь добавить панель к BorderLayout.NORTH, она также отображается в центре вверху, но вместо этого я хочу быть в верхнем левом углу .

Есть ли способ сделать это?IE любой другой макет, который я должен использовать, как я хочу показать

label1
button1     button2     button3

label2
button1     button2     button3

label 3
button1     button2     button3

Ответы [ 3 ]

4 голосов
/ 09 сентября 2011

Это легко сделать только с GridLayout и BorderLayout.

Label-Button Layout

import java.awt.*;
import javax.swing.*;

class LabelButtonLayout {

    public static Component getButtonLayout(int num) {
        JPanel p = new JPanel(new BorderLayout(3,3));

        p.add(new JLabel("Label " + num), BorderLayout.NORTH);

        JPanel b = new JPanel(new GridLayout(1,0,25,5));
        for (int ii=1; ii<4; ii++) {
            b.add(new JButton("Button " + ii));
        }
        p.add(b, BorderLayout.CENTER);

        return p;
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater( new Runnable() {
            public void run() {
                JPanel gui = new JPanel(new GridLayout(0,1,3,15));
                for (int ii=1; ii<4; ii++) {
                    gui.add(getButtonLayout(ii));
                }
                JOptionPane.showMessageDialog(null, gui);
            }
        });
    }
}
3 голосов
/ 09 сентября 2011

Есть много способов сделать это, один из них заключается в дальнейшем вложении JPanels. Поместите JPanel BorderLayout.NORTH и присвойте ему BorderLayout. Затем добавьте к этому свой второй JPanel, BorderLayout.WEST.

0 голосов
/ 09 сентября 2011

Макет границы не позволяет вам добавлять что-либо непосредственно в СЕВЕРО-ЗАПАД.

Возможно, вы захотите сделать макет от JFrame до GridBagLayout, чтобы иметь необходимую гибкость

...