jDialog显示用的是setVisible(true);关闭的时候用meg1.setVisible(false);,但是当第二次再找开这个jdialog的时候,只有个框框,里面的组件没有显示出来,或显示不完全,这是怎么回事呢?

解决方案 »

  1.   

    检查你的代码,我这里没问题import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.JButton;
    import javax.swing.JDialog;
    import javax.swing.JFrame;public class Test extends JFrame {
    private JDialog dia = null;
    private JButton button = null, b = null;

    public Test() {
    dia = new JDialog(this, true);
    b = new JButton("Close");
    dia.getContentPane().add(b);
    dia.setSize(200, 100);
    b.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent arg0) {
    dia.setVisible(false);
    }});
    button = new JButton("Show Dialog");
    button.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent arg0) {
    dia.setVisible(true);
    }});
    this.getContentPane().add(button);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setSize(300, 200);
    this.setVisible(true);
    } public static void main(String[] args) {
    new Test();
    }
    }
      

  2.   

    谢谢,我的问题应该是初始化的进候出错了,我在弹出框里加载了JTree,JTree 的初始始化过程是在构造方法里完成的。这样就出错。
        后来,我把树的初始化过程放在按钮触发的过程中,就没问题了,不知是怎么回事。我这样说大家能明白吗?
      

  3.   

    使用 setVisiable 应当不会出现你的问题。
    第二次应当不会再初始化。
    尝试一下:JComponent.revalidate
    重新布局一次。