本帖最后由 Noword 于 2012-6-26 15:16 编辑
/*
制作一个窗体,在文本框中输入路径后,按回车,或点转到按钮
可以在文本区域中显示路径中的文件,输入错误弹出对话框提示输入的内容有误
*/
import java.io.*;
import java.awt.*;
import java.awt.event.*;
class GetDir
{
//定义窗体中的组件
private Frame f;
private Button b;
private TextField tf;
private TextArea ta;
private Dialog d;
private Button db;
private Label l;
private String dirPath;
public static void main(String[] args)
{
new GetDir();
}
GetDir()
{
init();
}
//绘制载入界面
private void init()
{
f = new Frame("ShowDir");
b = new Button("转到");
tf = new TextField(30);
ta = new TextArea(26,40);
f.setBounds(500,100,366,500);
f.setLayout(new FlowLayout());
f.add(tf);
f.add(b);
f.add(ta);
frameEvent();
f.setVisible(true);
}
//事件
private void frameEvent()
{
//窗体关闭按钮
f.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.out.println("执行窗体X按钮");
System.exit(0);
}
});
//添加转到按钮事件
b.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
textFieldOperator();
}
});
//文本框的回车事件
tf.addKeyListener(new KeyAdapter()
{
public void keyPressed(KeyEvent e)
{
if (e.getKeyCode() == KeyEvent.VK_ENTER)
{
textFieldOperator();
}
}
});
}
//对话框
private void dialog()
{
//绘制对话框
d = new Dialog(f,"错误信息",true);
db = new Button("确定");
l = new Label(dirPath+"是非法路径");
d.add(l);
d.add(db);
d.setBounds(400,200,200,100);
d.setLayout(new FlowLayout());
d.setVisible(true);
}
private void dialogEvent()
{
//对话框X按钮事件
d.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.out.println("执行对话框X按钮");
d.setVisible(false);
}
});
//对话框按钮事件
db.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
System.out.println("对话框按钮被执行");
d.setVisible(false);
}
});
}
//对话框的中文件的读取
private void textFieldOperator()
{
//得到文本框中的数据
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+"\t\n");
}
}
else
{
dialogEvent();
dialog();
//位置调换后,出现了三楼的错误
}
}
}
运行后的dialog信息窗口关闭不了,怎么回事
快来高手
================================================================
正确代码
import java.io.*;
import java.awt.*;
import java.awt.event.*;
class GetDir
{
//定义窗体中的组件
private Frame f;
private Button b;
private TextField tf;
private TextArea ta;
private Dialog d;
private Button db;
private Label l;
private String dirPath;
public static void main(String[] args)
{
new GetDir();
}
GetDir()
{
init();
}
//绘制载入界面
private void init()
{
f = new Frame("ShowDir");
b = new Button("转到");
tf = new TextField(30);
ta = new TextArea(26,40);
f.setBounds(500,100,366,500);
f.setLayout(new FlowLayout());
f.add(tf);
f.add(b);
f.add(ta);
frameEvent();
f.setVisible(true);
}
//事件
private void frameEvent()
{
//窗体关闭按钮
f.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.out.println("执行窗体X按钮");
System.exit(0);
}
});
//添加转到按钮事件
b.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
textFieldOperator();
}
});
//文本框的回车事件
tf.addKeyListener(new KeyAdapter()
{
public void keyPressed(KeyEvent e)
{
if (e.getKeyCode() == KeyEvent.VK_ENTER)
{
textFieldOperator();
}
}
});
}
//对话框
private void dialog()
{
//绘制对话框
d = new Dialog(f,"错误信息",true);
db = new Button("确定");
l = new Label(dirPath+"是非法路径");
d.add(l);
d.add(db);
d.setBounds(400,200,200,100);
d.setLayout(new FlowLayout());
dialogEvent();
d.setVisible(true);
}
private void dialogEvent()
{
//对话框X按钮事件
d.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.out.println("执行对话框X按钮");
d.setVisible(false);
}
});
//对话框按钮事件
db.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
System.out.println("对话框按钮被执行");
d.setVisible(false);
}
});
}
//对话框的中文件的读取
private void textFieldOperator()
{
//得到文本框中的数据
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+"\t\n");
}
}
else
{
dialog();
}
}
}
确实是顺序的问题,谢楼下的哥们儿
|
|