键盘监听事件疑惑,求大虾!拒绝灌水!
李荣强 2012-09-02 01:30:11 /*
需求:定义一个窗体,在窗体中加入一个文本框和文本区域,一个按钮(转到)
效果为,当在文本框中输入一个字符串表示的路径名,然后单击转到(按钮)或者按回车键
如果路径正确,则在文本区域中输出该路径下的所有文件名和文件夹名(仅输出一级目录),
如果路径错误,则给出一个对话框提示,内容为***路径**非法,请重新输入
当碰到错误提示时,单击对话框上的确定按钮或者回车键关闭该对话框;
思路:整体思路:主窗体+对话框
1 主窗体模块
创建并设置初始属性,setBounds(int,int,int,int);setLayout(new FlowLayout());
添加主窗体事件监听,如关闭,最小化,最大化等
创建一个文本框,设置大小,主要为负责输入字符
创建一个转到按钮,获取文本框中的信息,设置事件监听,当单击时,判断文本框中输入的数据是否为正确的,
如果正确则传给文本区域;如果错误则将错误信息发给对话框,显示对话框提示;
同时创建一个键盘监听事件,与转到按钮的功能相同;但按回车键时,先判断内容是否正确
如果正确则将数据传给文本区域,如果错误则将错误信息发给对话框,显示对话框提示;
创建一个文本区域,设置好大小,在其中加入事件监听,
接收来自键盘监听或者转到按钮的信息,然后输出接收到信息所表示的文件信息
所有的事件添加好之后,将文本框,文本区域,转到按钮添加到主窗体中,add方法
最后setVisible(true)显示窗体;
2 对话框模块
当在文本框中输入数据后,单击转到按钮或者回车键时,输入的路径名错误是
创建该对话框,设置好大小及相应属性;
创建一个标签显示错误信息
创建针对本对话框的事件监听,如果单击了本对话框的关闭按钮或者按下回车键则将本对话框设为
不可见即setVisible(false),而不用退出程序
步骤:
*/
package dialogframetest;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
class DialogFrame
{
private Frame frame;
private Button button;
private TextField tf;
private TextArea ta;
DialogFrame()
{
init();
}
public void init()
{
frame=new Frame("文件搜索");
frame.setSize(600,500);
frame.setLocation(100,100);
frame.setLayout(new FlowLayout());
tf=new TextField(60);//设置文本框大小;
frame.add(tf);
button=new Button("转到");
frame.add(button);
ta=new TextArea(25,70);
frame.add(ta);
frameEvent();
frame.setVisible(true);
}
private void frameEvent()
{
frame.addWindowListener(new WindowAdapter()
{
public void windowOpened(WindowEvent we)
{
System.out.println("窗体打开。。。");
}
public void windowActivated(WindowEvent we)
{
System.out.println("窗体前置,激活。。");
}
public void windowClosing(WindowEvent we)
{
System.out.println("X按钮关闭窗体");
System.exit(0);
}
});
frame.addKeyListener(new KeyAdapter()
{
public void keyPressed(KeyEvent ke)
{
if(ke.getKeyCode()==KeyEvent.VK_ESCAPE)
{
System.out.println("ESC关闭窗体");
System.exit(0);
}
}
});//怎么没有用呢?现像,当加入其它组件是时SC退出失效
}
}
class DialogFrameTest
{
public static void main(String[]args)
{
new DialogFrame();
}
}
问题:定义的键盘监听事件,当没有添加Button TextField TextArea等组件时,ESC可以关闭窗体,
而当定义并添加了这些组件时,ESC键却不可以关闭窗体了,即定义的键盘监听事件失效了,这是为啥呢??
求破。。。