黑马程序员技术交流社区
标题:
为什么Awt窗口无法关闭
[打印本页]
作者:
高鑫
时间:
2012-7-12 23:56
标题:
为什么Awt窗口无法关闭
本帖最后由 高鑫 于 2012-7-13 14:58 编辑
import java.awt.*;
import java.awt.event.*;
import java.io.*;
class MyWindowDemo
{
private Frame f;
private TextField tf;
private Button but,okBut;
private TextArea ta;
private Dialog d;
private Label lab;
MyWindowDemo()
{
init();
}
public void init()
{
f=new Frame("my window");
f.setBounds(300,100,600,500);
f.setLayout(new FlowLayout());
tf=new TextField(60);
but=new Button("转到");
ta=new TextArea(25,70);
d=new Dialog(f,"提示信息",true);
d.setBounds(400,200,240,150);
d.setLayout(new FlowLayout());
lab=new Label();
okBut=new Button("确定");
d.add(lab);
d.add(okBut);
f.add(tf);
f.add(but);
f.add(ta);
myEvent();
f.setVisible(true);
}
private void myEvent()
{
d.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
d.setVisible(false);
}
});
okBut.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
d.setVisible(false);
}
});
tf.addKeyListener(new KeyAdapter()
{
public void keyPressed(KeyEvent e)
{
if(e.getKeyCode()==KeyEvent.VK_ENTER)
showDir();
}
});
but.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
showDir();
}
});
f.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
}
private void showDir()
{
String dirPath=tf.getText();
File dir=new File(dirPath);
if(dir.exists()&&dir.isDirectory())
{
ta.setText("");
String [] names=dir.list();
for(String name:names)
{
ta.append(name+"\r\n");
}
}
else
{
String info="输入信息有误"+dirPath+"请重输";
lab.setText(info);
d.setVisible(true);
}
}
public static void main(String[]args)
{
new MyWindowDemo();
}
}
复制代码
程序哪里出问题了,为什么点窗口无法关闭程序??求指点
作者:
王冰
时间:
2012-7-13 00:16
本帖最后由 王冰 于 2012-7-13 00:22 编辑
import java.awt.*;
import java.awt.event.*;
import java.io.*;
class MyWindowDemo
{
private Frame f;
private TextField tf;
private Button but,okBut;
private TextArea ta;
private Dialog d;
private Label lab;
MyWindowDemo()
{
init();
}
public void init()
{
f=new Frame("my window");
f.setBounds(300,100,600,500);
f.setLayout(new FlowLayout());
tf=new TextField(60);
but=new Button("转到");
ta=new TextArea(25,70);
d=new Dialog(f,"提示信息",true);
d.setBounds(400,200,240,150);
d.setLayout(new FlowLayout());
lab=new Label();
okBut=new Button("确定");
d.add(lab);
d.add(okBut);
f.add(tf);
f.add(but);
f.add(ta);
myEvent();
f.setVisible(true);
}
private void myEvent()
{
d.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
d.setVisible(false);
}
});
okBut.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
d.setVisible(false);
}
});
tf.addKeyListener(new KeyAdapter()
{
public void keyPressed(KeyEvent e)
{
if(e.getKeyCode()==KeyEvent.VK_ENTER)
showDir();
}
});
but.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
showDir();
}
});
f.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
}
private void showDir()
{
String dirPath=tf.getText();
File dir=new File(dirPath);
if(dir.exists()&&dir.isDirectory())
{
ta.setText("");
String [] names=dir.list();
for(String name:names)
{
ta.append(name+"\r\n");
}
}
else
{
String info="输入信息有误"+dirPath+"请重输";
lab.setText(info);
d.setVisible(true);
}
}
public static void main(String[]args)
{
new MyWindowDemo();
}
}
你那红色部分的代码有错误,按钮不能添加
addWindowListener
,一般可以添加
addActionListener
,代码应该改为如下样子程序就可以正常运行了
okBut.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
d.setVisible(false);
}
});
作者:
王宝康
时间:
2012-7-13 00:59
本帖最后由 王宝康 于 2012-7-13 01:11 编辑
package awt;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
class MyWindowDemo
{
private Frame f;
private TextField tf;
private Button but,okBut;
private TextArea ta;
private Dialog d;
private Label lab;
MyWindowDemo()
{
init();
}
public void init()
{
f=new Frame("my window");
f.setBounds(300,100,600,500);
f.setLayout(new FlowLayout());
tf=new TextField(60);
but=new Button("转到");
ta=new TextArea(25,70);
d=new Dialog(f,"提示信息",true);
d.setBounds(400,200,240,150);
d.setLayout(new FlowLayout());
lab=new Label();
okBut=new Button("确定");
d.add(lab);
d.add(okBut);
f.add(tf);
f.add(but);
f.add(ta);
myEvent();
f.setVisible(true);
}
private void myEvent()
{
d.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
d.setVisible(false);
}
});
f.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
d.setVisible(false);
}
});
tf.addKeyListener(new KeyAdapter()
{
public void keyPressed(KeyEvent e)
{
if(e.getKeyCode()==KeyEvent.VK_ENTER)
showDir();
}
});
but.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
showDir();
}
});
f.addWindowListener(new WindowAdapter() {//此处可以把事件监听器注册到窗体本身
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
}); }
private void showDir()
{
String dirPath=tf.getText();
File dir=new File(dirPath);
if(dir.exists()&&dir.isDirectory())
{
ta.setText("");
String [] names=dir.list();
for(String name:names)
{
ta.append(name+"\r\n");
}
}
else
{
String info="输入信息有误"+dirPath+"请重输";
lab.setText(info);
d.setVisible(true);
}
}
public static void main(String[]args)
{
new MyWindowDemo();
}
}
你的窗口关闭事件应该注册到窗体本身,你代码中注册到了按钮上了,你可以试下。
作者:
王冰
时间:
2012-7-13 01:57
王冰 发表于 2012-7-13 00:16
import java.awt.*;
import java.awt.event.*;
import java.io.*;
不可能啊,我改了之后运行很正常啊
作者:
陆强强
时间:
2012-7-13 02:50
我试了。可以关闭了
okBut.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
d.setVisible(false);
}
});
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2