当前位置: 代码迷 >> J2SE >> 关于Dialog的小疑点
  详细解决方案

关于Dialog的小疑点

热度:83   发布时间:2016-04-24 00:31:34.0
关于Dialog的小问题
Java code
import java.awt.*;import java.awt.event.*;public class Test {     Frame f ;     TextField text;    Dialog d;        Test(){        init();    }        private void init(){        f = new Frame();        text = new  TextField(20);        f.setBounds(100,100,200,200);        f.add(text);        f.setVisible(true);                text.addKeyListener(new KeyAdapter(){            public void keyPressed(KeyEvent e){                if(e.getKeyCode()==KeyEvent.VK_ENTER){                                    d=new Dialog(f,"error",true) ;                    System.out.println(d.getModalityType());                    d.setSize(100,100);                    d.setVisible(true);                    //运行后,按ENTER调出对话框,按CTRL+ENTER则在console打印文本信息                    System.out.println("1111111111111111");                    /*                 问题在这里---->对话框调出后,语句到这里就不执行了,什么情况,求解释?????                     根本没有打印1111111,于是下面代码的关闭对话框也没效果,222222也没打印出来,                    在这里我只想要动态加载对话框,也就是如果不按ENTER就不去生成对话框以节省资源,                    请大神不要让我把Dialog在定义时就初始化生成 */                                        //而关键问题好像就在于,当我前面的一句改成d=new Dialog(f,"error",false);就没问题了,所以要怎么解决呢?                    d.addWindowListener(new WindowAdapter(){                                                public void windowClosing(WindowEvent e){                            System.out.println("2222222222222");                            d.setVisible(false);                        }                    });                }                                            if(e.isControlDown()&&e.getKeyCode()==KeyEvent.VK_ENTER){                    System.out.println(text.getText());                    text.setText("");                }                            }            }        );                    f.addWindowListener(new WindowAdapter(){            @Override            public void windowClosing(WindowEvent e){                System.exit(0);            }        });                    }    public static void main(String[] args) {        Test t = new Test();    }}


------解决方案--------------------
很正常啊:
d=new Dialog(f,"error",true);
你这个是“模态”对话框啊,激活后就会阻塞主窗体,关闭后主窗体才能继续运行。

要么就修改为:
d=new Dialog(f,"error",false);
  相关解决方案