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

您还需要将panel3的布局设置为null,否则使用默认的FlowLayout

panel3.setLayout(null);

一些额外的建议。 学习使用LayoutManagers。 他们可能会有轻微的学习曲线,但绝对值得。 很好的教程: http : //download.oracle.com/javase/tutorial/uiswing/layout/using.html

同样根据Java标准,类名应以大写字母开头。 这样做可以帮助其他人更好地阅读您的代码。

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

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

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

我建议使用LayoutManagers。