一个JPanel嵌套在另一个JPanel中

9

我有一个问题,涉及一个JPanel嵌套在另一个JPanel中。我不知道为什么,但结果是一个简单的正方形,但尺寸不正确。为什么会这样呢?

import java.awt.Color;
import java.awt.Container;

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

public class jj extends JFrame {

    private JPanel painel3;
    private JPanel painel5;
    private Container container;

    public jj() {

        container = getContentPane();
        container.setLayout(null);

        painel5 = new JPanel();
        painel5.setBackground(Color.red);
        painel5.setBounds(120, 110, 100, 120);
        painel3 = new JPanel();
        painel3.setBackground(Color.white);
        painel3.add(painel5);
        painel3.setBounds(50, 50, 290, 220);

        container.add(painel3);

        // frame
        setSize(1000, 900);
        setLocation(200, 50);
        setResizable(false);
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    }

    public static void main(String[] args) {
        new jj();
    }
}
4个回答

5
你需要将panel3的布局设置为null,否则默认使用 FlowLayout 布局: panel3.setLayout(null);

1
当我测试他的代码时,添加 painel3.setlayout(null); 起作用了。 - jamesbtate

4

我把我的布局改成了GridLayout。 - anvd

2
更好的方法是避免使用null布局和setBounds/setSize,而是让布局管理器帮助您布置GUI。您可以在此处阅读有关它们的信息:在容器中布置组件

0
在添加painel5面板之前,将painel3的布局设置为null。

painel3.setLayout(null); painel3.add(painel5);

我建议使用布局管理器。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接