Java 如何同时显示两个不同的面板?

Java 如何同时显示两个不同的面板?,java,swing,jpanel,panel,layout-manager,Java,Swing,Jpanel,Panel,Layout Manager,我的第一个面板的布局是BorderLayout,第二个面板的布局是GridBagLayout。我不知道如何同时展示它们 我已经尝试将两个面板添加到另一个面板上。将这两个面板添加到另一个面板上才是正确的选择!但是您必须为这个“父”面板选择正确的LayoutManager。让我举个例子: JFrame的内容窗格(您可以在其中添加所有的组件)可以使用您选择的LayoutManager进行设置。请参见此可运行示例,它创建了两个不同颜色的100x100像素的JPanels。面板使用您提到的LayoutMa

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


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

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

JFrame
的内容窗格(您可以在其中添加所有的
组件)可以使用您选择的
LayoutManager
进行设置。请参见此可运行示例,它创建了两个不同颜色的100x100像素的
JPanel
s。面板使用您提到的
LayoutManager
s,但是
JFrame
的主内容窗格设置为
BoxLayout
(水平,但也可以设置为垂直!)

您也可以对任何其他面板执行此操作。A
panel.setLayout(新的BoxLayout(panel,BoxLayout.X_轴))就足够了。下面的示例仅使用内容窗格,但您可以根据需要对其进行调整:

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

}
看起来是这样的:


编辑:从您的问题来看,有点不清楚您是否确实想要堆叠重叠面板。您可能会在此处找到所需内容:

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

JFrame
的内容窗格(您可以在其中添加所有的
组件)可以使用您选择的
LayoutManager
进行设置。请参见此可运行示例,它创建了两个不同颜色的100x100像素的
JPanel
s。面板使用您提到的
LayoutManager
s,但是
JFrame
的主内容窗格设置为
BoxLayout
(水平,但也可以设置为垂直!)

您也可以对任何其他面板执行此操作。A
panel.setLayout(新的BoxLayout(panel,BoxLayout.X_轴))就足够了。下面的示例仅使用内容窗格,但您可以根据需要对其进行调整:

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

}
看起来是这样的:


编辑:从您的问题来看,有点不清楚您是否确实想要堆叠重叠面板。您可能会在此处找到所需内容:

如何将第二个面板添加到第一个面板的顶部?只需使用
BoxLayout.Y\u轴
而不是
BoxLayout.X\u轴
。别忘了按正确的顺序添加。我的意思是在另一个面板后面添加一个面板。后面?那么一个面板被另一个面板隐藏了?您只需使用
panel1.setVisible(false)
就可以只使用
panel2
,反之亦然。我想让两者都可见。可能吗?就像第一个面板只是一个背景一样。如何将第二个面板添加到第一个面板的顶部?只需使用
BoxLayout.Y\u轴
而不是
BoxLayout.X\u轴
。别忘了按正确的顺序添加。我的意思是在另一个面板后面添加一个面板。后面?那么一个面板被另一个面板隐藏了?您只需使用
panel1.setVisible(false)
就可以只使用
panel2
,反之亦然。我想让两者都可见。可能吗?就像第一个小组只是一个背景。我想,由于不清楚是否有额外的要求,这个问题的低质量并不明显。询问如何显示这两个面板是有道理的-这还不是全部内容。以最小尺寸提供ASCII艺术或GUI预期布局的简单绘图,如果可以调整大小,则具有更大的宽度和高度-以显示应如何使用额外的空间。我想,由于不清楚是否有其他要求,这个问题的低质量并不明显。询问如何显示这两个面板是有道理的——这还不是全部。以最小的尺寸提供ASCII艺术或GUI预期布局的简单绘图,如果可以调整大小,则具有更大的宽度和高度,以显示如何使用额外的空间。