2

我做了一个JFrame,在那个框架里面,有一个面板,我在上面放置了各种容器GridBagLayout。我已将布局设置JFrameBorderLayout,并在BorderLayout.WEST. 我想在左上角显示该面板的容器。我怎样才能做到这一点?

即使我尝试添加面板,BorderLayout.NORTH它也会显示在顶部中心,但我想在左上角

有没有办法做到这一点?IE 任何其他我应该使用的布局,因为我想显示

label1
button1     button2     button3

label2
button1     button2     button3

label 3
button1     button2     button3
4

3 回答 3

4

只需GridLayout和很容易做到这一点BorderLayout

标签按钮布局

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);
            }
        });
    }
}
于 2011-09-09T06:14:45.987 回答
3

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

于 2011-09-09T05:45:38.483 回答
0

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

您可能想要制作 to 的布局,JFrame以便GridBagLayout拥有所需的灵活性

于 2011-09-09T05:49:12.897 回答