Java 添加到另一个JPanel后,JPanel变得更小(很多)

Java 添加到另一个JPanel后,JPanel变得更小(很多),java,Java,在我将我的画布(蓝色的)添加到画布2(绿色的)之后,画布变得非常小,我不知道为什么。帮助我!这是我的密码: public static void main(String[] args) { JPanel canvas = new JPanel(); JPanel canvas2 = new JPanel(); canvas.setBounds(40, 40, 200, 200); canvas.setBackground(Color.BLUE); c

在我将我的画布(蓝色的)添加到画布2(绿色的)之后,画布变得非常小,我不知道为什么。帮助我!这是我的密码:

public static void main(String[] args) {

    JPanel canvas = new JPanel();
    JPanel canvas2 = new JPanel();

    canvas.setBounds(40, 40, 200, 200);
    canvas.setBackground(Color.BLUE);

    canvas2.setBounds(40, 40, 200, 200);
    canvas2.setBackground(Color.GREEN);
    canvas2.add(canvas);

    JFrame window = new JFrame();
    window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    window.setBounds(30, 30, 600, 600);
    window.getContentPane().add(canvas2);
    window.setVisible(true);
}
结果是:


您的代码忽略了容器布局管理器——JFrame的contentPane的BorderLayout和JPanel的FlowLayout。添加到这些容器中的组件将由这些布局管理器调整大小

您可以在此处找到布局管理器教程:,也可以在此处找到指向Swing教程和其他Swing资源的链接:。

canvas
(蓝色
JPanel
)完全为空。因此,
LayoutManager
正在将其大小调整到尽可能小的大小。如果你添加一些组件,它会变得更大。或者,你也可以这样做

 canvas.setPreferredSize(new Dimension(200, 200));
但出于几个原因,这通常是一个坏主意