第一张图:主窗体
第二张图:对话框
需求:在文本框中输入一个目录,点击“转到”或者enter都能将目录对应的文件打印在文本区域中,若不是正确的路径,则弹出对话框
import java.awt.*;
import java.awt.event.*;
import java.io.*;
public class LianXi {
private Frame f;
private TextField tf;
private Button but;
private TextArea ta;
private Dialog d;
private Label lab;
private Button okbut;
LianXi(){
init();
}
public void init() {
//设置主窗体界面
f=new Frame("myFrame");
f.setSize(500, 400);
f.setLocation(300, 200);
f.setLayout(new FlowLayout());
tf=new TextField(20);
f.add(tf);
but =new Button("转到");
f.add(but);
ta=new TextArea(15,40);
f.add(ta);
//设置对话框界面
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.setVisible(true);
event();
}
public void event() {
//主窗体监听关闭
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
//对话框中确定按钮监听关闭
okbut.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
d.setVisible(false);//这里不能写System.exit(0);主窗体还没操作结束
}
});
//按钮监听按下事件
but.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
showDir();
}
});
//键盘监听enter
tf.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
if(e.getKeyCode()==KeyEvent.VK_ENTER)
showDir();
}
});
}
public void showDir()//按钮和键盘敲入回车都能将文件打印在文本区域中,
//他们监听的事件处理方式都是相同的,封装成一个函数,在相应的匿名内部类中调用该方法
{
String str=tf.getText();
//获取目录下的文件
File dir=new File(str);
if(dir.exists()&&dir.isDirectory())
{
ta.setText(null);//每次输入正确目录应该将之前的文本区域文件清空
String [] names=dir.list();
for(String name:names)
{
ta.append(name+"\r\n");//不能用ta.setText方法,否则只能显示最后一个文件项
}
}
else
{
String info="您输入的信息:"+tf.getText()+" 是错误的";
lab.setText(info);
d.setVisible(true);
}
}
}