事件监听机制——列出指定目录内容、添加Dialog对话框

事件监听机制理解与Dialog练习

        利用Java语言,仿照我的电脑目录进行打开目录,输入文件路径,查看该路径下所有的文件,设置两个文本框,一个转到按钮,当点击转到按钮时,查看路径是否正确,若正确在第二个文本框中打开文件路径,若不正确弹出对话框(Dialog),显示提示信息,完成该设计。

要求:

(1)输入正确的路径,要求主窗体采用流式布局管理,实现右上角退出按钮,对于转到Button,鼠标点击可以实现,通过ENTER键也能实现。

(2)Dialog模式为true,即当路径不正确时,Dialog对话框弹出,必须点击确定获右上角关闭按钮才能操作主窗口。

提示:

(1)当点击Dialog右上角关闭时,操作应为Dialog窗体隐身,通过setVisible(false)实现,而不能真的关闭System.exit(0),否则程序则会退出。

(2)如果多次操作,应将上次的操作目录清空。


import java.awt.*;
import java.awt.event.*;
import java.io.*;
class MyWindowDemo  
{
	private Frame f;
	private TextField tf;
	private Button btn;
	private TextArea ta;
	
	// 对话框,操作出现错误时弹窗
	private Dialog d;
	private Label lab;
	private Button okBtn;

	MyWindowDemo()
	{
		init();
	}
	
	public void init()
	{
		f=new Frame("my window");
		f.setBounds(300,100,600,500);
		f.setLayout(new FlowLayout());

		tf=new TextField(60);
		btn=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();
		okBtn=new Button("确定");
		
		d.add(lab);
		d.add(okBtn);

		f.add(tf);
		f.add(btn);
		f.add(ta);
		
		myEvent();
		f.setVisible(true);
	}

	private void myEvent()
	{
		okBtn.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent e)
			{
				d.setVisible(false);//点击确定按钮将Dialog窗体隐身
			}
		});

		d.addWindowListener(new WindowAdapter()
		{
			public void windowClosing(WindowEvent e)
			{
				d.setVisible(false);//点击关闭将将Dialog窗体隐身
			}
		});

		//做一个键盘监听,ENTER键
		tf.addKeyListener(new KeyAdapter()
		{
			public void keyPressed(KeyEvent e)
			{
				if(e.getKeyCode()==KeyEvent.VK_ENTER)
					showDir();
			}
			
		});

		btn.addActionListener(new ActionListener()
		{

			public void actionPerformed(ActionEvent e)
			{
				//String text=tf.getText();
				//System.out.println(text);
				//ta.setText(text);
				showDir();
				
				//tf.setText("");
			}
		});

		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.setText(name+"
");这样的话会被替代
				ta.append(name+"
");
			}
		}
		else
		{
			String info="您输入的信息"+dirPath+"是错误的,请重输";
			lab.setText(info);
			d.setVisible(true);
		}
	}

	public static void main(String[] args) 
	{
		new MyWindowDemo();
	}
}


效果图:

                               

                       


原文地址:https://www.cnblogs.com/xiangyangzhu/p/4239778.html