【问题标题】:Java layout center with two panels带有两个面板的 Java 布局中心
【发布时间】:2013-05-12 06:15:31
【问题描述】:

在 Java 中,当使用 BorderLayout 时,是否可以在 CENTER 中有两个面板,但两者都在表单上可见。

这是我的代码:

    guiFrame.add(guiFieldsPanel, BorderLayout.CENTER);
    guiFrame.add(guiButtonsPanel, BorderLayout.CENTER);        
    guiFrame.setVisible(true);

在上面的代码中,两个面板都设置为中心,但我只能看到 guiButtonsPanel,因为它位于 guiFieldsPanel 的“顶部”。

我可以将两个面板组合在一起,然后将它们设置为显示在中心吗?

【问题讨论】:

  • BorderLayout 默认情况下,只允许单个组件驻留在其 5 个可用位置中的任何一个中。如果您尝试将另一个组件添加到占用的位置,您实际上是从组件中删除了前一个组件(它实际上并没有被删除,只是没有布局,但结果是一样的......)

标签: java swing jpanel layout-manager border-layout


【解决方案1】:

请参阅Nested Layout Example,了解有关如何组合 布局以创建所需布局的想法。例如

也许使用单行 GridLayout 作为中心。

guiFrame.add(guiFieldsPanel, BorderLayout.CENTER);
guiFrame.add(guiButtonsPanel, BorderLayout.CENTER);        

但这表明 GroupLayout 有 2 列,如 this answer 所示。例如

【讨论】:

    【解决方案2】:

    您需要创建一个包含guiFieldsPanelguiButtonsPanel 的中间面板,然后将其添加到边框布局中。

    final JPanel centre = new JPanel(new FlowLayout(FlowLayout.LEFT, 0, 0));
    centre.add(guiFieldsPanel);
    centre.add(guiButtonsPanel);
    
    guiFrame.add(centre, BorderLayout.CENTER);
    guiFrame.setVisible(true);
    

    关于guiFieldsPanelguiButtonsPanel的相对位置,您可以根据需要调整centre的布局。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-05
      • 1970-01-01
      • 2011-02-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-05
      相关资源
      最近更新 更多