GUI练习——列出指定目录内容

需求:

一个窗体里。在文本框输入路径后,摁回车键或者点击"转到"按钮后; 若路径合法,程序会自动在文本域里显示该路径下的文件目录;若路径非法,则弹出对话框,告之你路径非法。点击"确认"关闭对话框。

GUI练习——列出指定目录内容

 

package Test603;



import java.awt.*;

import java.awt.event.*;

import java.io.File;



/**

 * 需求:一个窗体里。在文本框输入路径后,摁回车键或者点击"转到"按钮后,

 * 若路径合法,程序会自动在文本域里显示该路径下的文件目录;

 * 若路径非法,则弹出对话框,告之你路径非法。

 * 点击"确认"关闭对话框;

 * 

 * @author Administrator

 *

 */

public class MyWindow {

	

	private Frame fm;

	private Button bt;

	private TextField tf;

	private Dialog dl;

	private TextArea ta;

	private Label lb;

	private Button bt1;

	

	//把布局的一些设置放在类的构造函数里,使其一初始化,便开始加载这些布局

	MyWindow() {

		init();

	}

	public void init()

	{

		fm = new Frame("我的窗口");

		fm.setBounds(300, 100, 600, 500);

		fm.setLayout(new FlowLayout());//布局方式

		tf = new TextField(60);

		bt = new Button("转到");

		ta = new TextArea(25, 70);

		

		dl = new Dialog(fm, "错误提示信息", true); //初始化一个对话框

		dl.setBounds(400, 200, 240, 150);

		dl.setLayout(new FlowLayout());

	    lb = new Label("路径是无效的"); //初始化一个标签(对话框里的信息)

		bt1 = new Button("确认"); //初始化一个按钮(对话框里的)

		dl.add(lb);

		dl.add(bt1);

		

		fm.add(bt);//将组件添加到Farame中

		fm.add(tf);

		fm.add(ta);

		

		this.myEvent();//调用事件

		fm.setVisible(true);//设置初始时为可见的

	}



	//事件。里面定义监听器,

	private void myEvent()

	{

		//窗体的监听器,当点击了叉号后会关闭窗体

		fm.addWindowListener(new WindowAdapter() {

			public void windowClosing(WindowEvent e)

			{

				System.exit(0);

			}

		});

		//按钮的监听器,当摁了按钮后,调用显示目录文件的方法showDir()

		bt.addActionListener(new ActionListener() {

			

			public void actionPerformed(ActionEvent e) {

				showDir();

			}

		});

		//对话框里按钮的监听器,当摁了后会关闭对话框

		bt1.addActionListener(new ActionListener() {

			

			public void actionPerformed(ActionEvent e) {

				dl.setVisible(false);		

			}

		});

		//键盘的监听器,当在文本框里输入路径后直接敲回车键,便可调用showDir()

		tf.addKeyListener(new KeyAdapter() {

			public void keyPressed(KeyEvent e)

			{

				if(e.getKeyCode()==KeyEvent.VK_ENTER)

				{

					showDir();

				}

			}

		});

	}



	

	/*定义列出文件目录的函数:

	 * 它先会判断从文本框输入的路径是否合法(是否存在并且是目录),

	 * 若合法,则列出该目录下的所有文件,添加到(append)到文本域中显示出来

	 * 若非法,则它会初始化一个对话框,并弹出告诉你错误信息

	 * */

	public void showDir()

	{

		String dirPath = tf.getText();

		File dir = new File(dirPath);

		if(dir.exists()&&dir.isDirectory())

		{

			ta.setText("");

			String[] dirNames = dir.list();

			for(String name:dirNames)

			{

				ta.append(name+"\r\n");

			}

		}else 

		{

			dl.setVisible(true);

		}

	}

	public static void main(String[] args) {



		new MyWindow();

	}



}

我们的需求是基本实现了,但不太理想的地方是:对话框是只有输入非法路径的时候才会出现的,大多数情况下是不会出现的,但我们是给一初始化便加载了对话框,这造成了内存的浪费。我们应该思考如何改进。。。

 

你可能感兴趣的:(GUI)