JPanel在另一个里面

时间:2011-01-20 16:27:10

标签: java swing 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 个答案:

答案 0 :(得分:5)

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

panel3.setLayout(null);

答案 1 :(得分:3)

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

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

答案 2 :(得分:2)

更好的方法是避免使用null布局和setBounds / setSize,而是让布局管理器帮助您布局GUI。您可以在此处阅读:Laying out components in a container

答案 3 :(得分:0)

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

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

我建议使用LayoutManagers。