一个panel中放了两个JCheckBox,第二个总能显示,第一个显示有问题,如果鼠标放在第一个上面,它就会显示出来,如果移开,它就隐藏了。请高手急救,谢谢!
代码如下:import java.awt.Dimension;
import java.awt.Rectangle;import javax.swing.JCheckBox;
import javax.swing.JDialog;
import javax.swing.JPanel;public class Test extends JDialog { JPanel panel = new JPanel();
JCheckBox cbox = new JCheckBox();
JCheckBox cbox2 = new JCheckBox();
public Test(){
panel.setLayout(null);
panel.setBounds(new Rectangle(0, 203, 378, 162));
cbox.setText("第一个");
cbox.setBounds(new Rectangle(11, 73, 178, 18));
cbox2.setText("第二个");
cbox2.setBounds(new Rectangle(11, 73, 178,100));
panel.add(cbox,null);
panel.add(cbox2,null);
cbox.setVisible(true);
cbox2.setVisible(true);
this.getContentPane().add(panel,null);
}
public static void main(String[] args){
Test t = new Test();
t.setSize(new Dimension(500,500));
t.setVisible(true);
}
}

解决方案 »

  1.   

    this.getContentPane().add(panel,null); 后面 加个 repaint()或者 refresh()
      

  2.   

    repaint()通常是在component变化的时候让系统调用来重画这个component和这个component所包含的child components。通常repaint就是调用paint()或paintComponent() 
      

  3.   

    笨笨,你两个控件叠在一起啦,在11,73处重叠cbox.setBounds(new Rectangle(11, 73, 178, 18)); 
    cbox2.setBounds(new Rectangle(11, 73, 178,100)); 
      

  4.   

    很奇诡,你要不 不要用那个null 了,换成 某一种布局方式 如 下面代码:public class Test extends JDialog
    {    JPanel panel = new JPanel();    JCheckBox cbox = new JCheckBox();    JCheckBox cbox2 = new JCheckBox();    public Test()
        {
            panel.setLayout(new BorderLayout());
            //panel.setBounds(new Rectangle(0, 203, 378, 162));
            cbox.setText("第一个");
            //cbox.setBounds(new Rectangle(11, 73, 178, 18));
            cbox2.setText("第二个");
            // cbox2.setBounds(new Rectangle(11, 73, 178, 100));
            panel.add(cbox, BorderLayout.NORTH);
            panel.add(cbox2, BorderLayout.SOUTH);
            this.getContentPane().add(panel);
        }    public static void main(String[] args)
        {
            Test t = new Test();
            t.setSize(new Dimension(500, 500));
            t.setVisible(true);
        }
    }
      

  5.   

    还有就是,第二个控件高度太高了
    new Rectangle(int x,int y,int width,int height)
    前两个是定位坐标,后两个是控件的宽、高
    cbox.setText("第一个");
    cbox.setBounds(new Rectangle(10, 50, 178, 18));
    cbox2.setText("第二个");
    cbox2.setBounds(new Rectangle(10, 70, 178, 18));