设置布局时出现问题

时间:2011-09-09 05:43:32

标签: java swing layout gridbaglayout border-layout

我已经制作了一个JFrame,在该框架内,有一个面板,我使用GridBagLayout放置了各种容器。我已将JFrame的布局设置为BorderLayout,并在BorderLayout.WEST中添加了面板。我想在左上角显示该面板的容器。我怎么能这样做?

即使我尝试将面板添加到BorderLayout.NORTH,它也显示在顶部中心,而是我想要在左上角

有没有办法做到这一点? I.E.我想要展示的任何其他布局

label1
button1     button2     button3

label2
button1     button2     button3

label 3
button1     button2     button3

3 个答案:

答案 0 :(得分:4)

仅使用GridLayoutBorderLayout即可轻松完成。

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);
            }
        });
    }
}

答案 1 :(得分:3)

有很多方法可以做到这一点,一个是进一步嵌套JPanels。放置一个JPanel BorderLayout.NORTH,并给它一个BorderLayout。然后将另一个JPanel添加到此边框,即BorderLayout.WEST。

答案 2 :(得分:0)

边框布局不允许您直接向NORTHWEST添加内容。

您可能希望将JFrame的布局设为GridBagLayout,以便您拥有所需的灵活性