java - 如何同时显示2个不同的面板?

标签 java swing jpanel panel layout-manager

我的第一个面板的布局是 BorderLayout,我的第二个面板的布局是 GridBagLayout。我不知道如何同时显示它们。

我已经尝试将两个面板添加到另一个面板上。

最佳答案

将两者添加到另一个面板是正确的方法!但是您必须为此“父”面板正确选择 LayoutManager。让我举个例子:

JFrame 的内容 Pane (您添加所有 Component 的位置)可以使用您选择的 LayoutManager 进行设置。请参阅此可运行示例,该示例创建两个不同颜色的 100x100 像素的 JPanel。这些面板使用您提到的 LayoutManager ,但 JFrame 的主要内容 Pane 设置为 BoxLayout (水平,但您也可以将其设置为垂直!)。

您也可以对任何其他面板执行此操作。一个 panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS)); 就足够了。下面的示例仅使用内容 Pane ,但您可以根据需要进行调整:

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridBagLayout;

import javax.swing.BoxLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class TwoPanels extends JFrame {

    private static final long serialVersionUID = 1L;
    private static final Dimension DEFAULT_DIMENSION = new Dimension(100, 100);

    public static void main(String[] args) {
        new TwoPanels();
    }

    public TwoPanels() {
        //create panel 1
        JPanel panel1 = new JPanel(new BorderLayout());
        panel1.setPreferredSize(DEFAULT_DIMENSION);
        panel1.setBackground(Color.RED);

        //create panel 2
        JPanel panel2 = new JPanel(new GridBagLayout());
        panel2.setPreferredSize(DEFAULT_DIMENSION);
        panel2.setBackground(Color.GREEN);

        //set content pane layout
        setLayout(new BoxLayout(this.getContentPane(), BoxLayout.X_AXIS));

        //add to content pane
        add(panel1);
        add(panel2);

        //setup and display window
        pack();
        setVisible(true);
    }

}

看起来像这样:

enter image description here

编辑:从你的问题来看,你实际上想要堆叠覆盖面板有点不清楚。您可能会在这里找到您需要的内容:https://docs.oracle.com/javase/tutorial/uiswing/components/layeredpane.html

关于java - 如何同时显示2个不同的面板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57090671/

相关文章:

java - 基于角色 Springboot+Thymeleaf 禁用/启用 Html 元素

java - 如果 Spring MVC 中的 @Autowired 服务不是由 spring 管理的,是否有其他替代方案?

java - 在 PLSQL Oracle 中抛出特定的错误消息...进入 hibernate 状态?

java - 在 JTable 中有多个具有不同值的 JComboBox

java - 按顺序执行两个 Action

java - 依赖Spring的注解

java - "incompatible datatypes in combination"查询日期值时出错

java - JTable valuechanged 然后更改单元格颜色

java - ActionListener 从 Jpanel 刷新 JFrame

java - 触发事件时面板从 Box 中消失