另一个JPanel内

问题描述:

我有一个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中的布局也为空,否则将使用默认FlowLayout

panel3.setLayout(null);

+1

添加`painel3.setlayout(空);当我测试他的代码`工作。 – Puddingfox 2011-01-20 16:40:36

更妙的是,虽然是为了避免使用空布局和的setBounds /的setSize而是让布局管理员帮助您布置GUI。你可以在这里对他们读了起来:Laying out components in a container

几个额外的建议。学习使用LayoutManagers。他们可能有一个轻微的学习曲线,但它肯定会是值得的。尼斯教程:http://download.oracle.com/javase/tutorial/uiswing/layout/using.html

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

+1

+1使用LayoutManagers是一个很好的建议。 – Jonas 2011-01-20 17:08:32

加入painel5面板之前设置painel3为空的布局。

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

我建议使用布局管理。