当前位置: 代码迷 >> J2SE >> Dialog对话框添加AddWindowListener后点关闭还是没反应是咋回事
  详细解决方案

Dialog对话框添加AddWindowListener后点关闭还是没反应是咋回事

热度:63   发布时间:2016-04-23 19:40:10.0
Dialog对话框添加AddWindowListener后点关闭还是没反应是怎么回事?
点确定有用,点关闭没反应。
package DormitoryManagementSystem;

import java.awt.Color;
import java.awt.Dialog;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JButton;
import javax.swing.JLabel;

public class StartLoginKeyListener extends KeyAdapter{
StartLogin sl;
public StartLoginKeyListener() { }
public StartLoginKeyListener(StartLogin sl) {
super();
this.sl = sl;
}
@Override
public void keyPressed(KeyEvent e) {
// TODO Auto-generated method stub
super.keyPressed(e);
if(e.getKeyCode() == KeyEvent.VK_ENTER){
if(sl.getJtf_1().getText().length()==0 || sl.getJpwf_1().getPassword().length==0){
ErrorInfo();
}
else{
char[] PassWord = sl.getJpwf_1().getPassword();
if(sl.getJtf_1().getText().length()==0 || sl.getJpwf_1().getPassword().length==0){
ErrorInfo();
}
else if(PassWord.toString()!="123456"){
System.out.println("密码错误");
}
else{
sl.dispose();
new MainFrame();
}
}
}
}
public void ErrorInfo(){
Dialog dl = new Dialog(sl,"Error---错误信息",true);
dl.setBounds(380,270,600, 150);
dl.setLayout(null);
dl.setResizable(false); //设置窗体大小不可以改变
dl.setBackground(Color.white);
JLabel jb= new JLabel("您输入的用户名或密码为空,请重新输入.");
jb.setBounds(125, 50, 380, 20);
jb.setFont(new Font("张海山锐线简体",Font.PLAIN,20));
dl.add(jb);
JButton jbutt = new JButton("确定");
jbutt.setBounds(230, 100, 150, 20);
jbutt.setBackground(Color.white);
jbutt.setFocusPainted(false);  //点击后文字不获得焦点边框
dl.add(jbutt);

dl.addWindowListener(new WindowAdapter() {

@Override
public void windowClosed(WindowEvent e) {
dl.setVisible(false);
}

});

jbutt.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
dl.setVisible(false);
}
});

dl.setVisible(true);
}
}

------解决思路----------------------
我记得有个System.exit(0)这样的..忘了是不是
当初好像就学了一点点
------解决思路----------------------
没有完整代码,不太清楚,不过你的代码没有抛异常么?
可以尝试把dl设置为final试试.感觉是匿名内部类变量引用的问题.如果final能解决,可以下载论坛上那个java核心技术,里面有一小部分关于匿名内部类参数传递限制的内容. 即必须是final的问题.
------解决思路----------------------
我觉得应该抛空指针才对...
  相关解决方案