在Java swing应用程序中可以有多少垂直字段详细信息?

在Java swing应用程序中可以有多少垂直字段详细信息?,java,swing,layout-manager,gridbaglayout,border-layout,Java,Swing,Layout Manager,Gridbaglayout,Border Layout,我知道将组件(例如BorderLayout)分别设置为顶部、中部或底部时的北部、中部和南部字段详细信息,但是,我想知道是否可以有三个以上的组件,如果可以,我将如何使用其他字段详细信息来实现这一点 目前,我有以下几点 北边界布局 中心网格布局 南网格布局 我想在程序的底部添加一个额外的GridBagLayout(在现有GridBagLayout的下方或上方)。我将如何着手添加一个额外的布局,以便它不会干扰和合并当前的南部地区 代码: 公共类boggleView扩展了JFrame{ 公共boggle

我知道将组件(例如BorderLayout)分别设置为顶部、中部或底部时的北部、中部和南部字段详细信息,但是,我想知道是否可以有三个以上的组件,如果可以,我将如何使用其他字段详细信息来实现这一点

目前,我有以下几点

北边界布局

中心网格布局

南网格布局

我想在程序的底部添加一个额外的GridBagLayout(在现有GridBagLayout的下方或上方)。我将如何着手添加一个额外的布局,以便它不会干扰和合并当前的南部地区

代码:

公共类boggleView扩展了JFrame{
公共boggleView(){
超级(“博格尔”);
可设置大小(假);
setLocationRelativeTo(空);
设置最小尺寸(新尺寸(400400));
JPanel northPanel=新的JPanel();
JPanel middlePanel=新的JPanel();
JPanel southPanel=新的JPanel();
JPanel southPanelBottom=新的JPanel();
//北面板
getContentPane().add(northPanel,BorderLayout.NORTH);
设置布局(新的FlowLayout(FlowLayout.LEFT));
JLabel gameBoardTitle=新的JLabel(“游戏板”);
添加(游戏板标题);
//中间板
getContentPane().add(middlePanel,BorderLayout.CENTER);
设置布局(新网格布局(4,4));

对于(int button=0;buttonBorderLayout本身无法做到这一点;它只能垂直布局3件事。请将容器(
window.getContentPane()
)切换到其他布局


与BorderLayout类似的是使用
BoxLayout
;我需要更多地了解这些子组件中的确切内容,以确定它是否是此处的正确替代品。

BorderLayout本身无法做到这一点;它只能垂直布局3件事。切换容器(
window.getContentPane()
,大概是)到不同的布局


与BorderLayout类似的是使用
BoxLayout
;我需要更确切地了解这些子组件中的内容,以确定它是否是此处的正确替代品。

使用带有布局BorderLayout的新辅助面板

将新的GridBagLayout面板置于此新辅助面板的南部,将现有的GridBagLayout面板(当前位于南部)置于此面板的北部

然后将这个新的辅助面板放到南方,替换旧的GridBagLayout面板

    JPanel southHelperPanel = new JPanel(new BorderLayout());
    southHelperPanel.add(southPanel, BorderLayout.NORTH); 
    southHelperPanel.add(southPanelBottom, BorderLayout.SOUTH); 

    getContentPane().add(southHelperPanel, BorderLayout.SOUTH);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    pack();
    setVisible(true);

使用带有布局边框布局的新辅助面板

将新的GridBagLayout面板置于此新辅助面板的南部,将现有的GridBagLayout面板(当前位于南部)置于此面板的北部

然后将这个新的辅助面板放到南方,替换旧的GridBagLayout面板

    JPanel southHelperPanel = new JPanel(new BorderLayout());
    southHelperPanel.add(southPanel, BorderLayout.NORTH); 
    southHelperPanel.add(southPanelBottom, BorderLayout.SOUTH); 

    getContentPane().add(southHelperPanel, BorderLayout.SOUTH);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    pack();
    setVisible(true);

您可以根据需要组合布局。请看下面的示例。在本例中,主面板有一个边框布局。在此面板的不同方向,我将添加新面板和其他布局

public class Test extends JFrame {

    public static void main(String[] args) {
        Test test = new Test();
        test.setVisible(true);
    }

    public Test() {

        JPanel main = new JPanel(new BorderLayout());

        JPanel top = new JPanel(new FlowLayout());
        JPanel center = new JPanel(new GridBagLayout());
        JPanel bottom = new JPanel(new BorderLayout());

        main.add(top, BorderLayout.PAGE_START);
        main.add(center, BorderLayout.CENTER);
        main.add(bottom, BorderLayout.PAGE_END);

        this.getContentPane().add(main);
        this.setSize(800, 500);
    }
}

如果你需要更多的“方向”,你也可以给你的主面板一个不同的布局(比如GridBagLayout)开始时。

您可以根据需要组合布局。请看下面的示例。在本例中,主面板有一个边框布局。在此面板的不同方向上,我将添加带有其他布局的新面板

public class Test extends JFrame {

    public static void main(String[] args) {
        Test test = new Test();
        test.setVisible(true);
    }

    public Test() {

        JPanel main = new JPanel(new BorderLayout());

        JPanel top = new JPanel(new FlowLayout());
        JPanel center = new JPanel(new GridBagLayout());
        JPanel bottom = new JPanel(new BorderLayout());

        main.add(top, BorderLayout.PAGE_START);
        main.add(center, BorderLayout.CENTER);
        main.add(bottom, BorderLayout.PAGE_END);

        this.getContentPane().add(main);
        this.setSize(800, 500);
    }
}

如果您在开始时需要更多的“方向”,也可以为主面板提供不同的布局(如GridBagLayout)。

我已经为post.Bottom南面板(southPanelBottom)添加了代码是我正在尝试添加的新面板。southPanel是当前的southPanel。我如何制作“帮助面板”?非常感谢。我已经在帖子中添加了代码。底部southPanel(southPanelBottom)是我要添加的新面板。southPanel是当前的southPanel。我如何制作“助手面板”?非常感谢。