日期:2014-05-20 浏览次数:21018 次
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();
}
}