zoukankan      html  css  js  c++  java
  • 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+"
    ");
    			}
    		}else 
    		{
    			dl.setVisible(true);
    		}
    	}
    	public static void main(String[] args) {
    
    		new MyWindow();
    	}
    
    }
    

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

  • 相关阅读:
    牡牛和牝牛
    卡特兰数 Catalan number
    Codeforces Round #633 (Div. 2)
    Codeforces Round #634 (Div. 3)
    陪审团
    线性DP
    AcWing 274. 移动服务
    Rust打印方法行号
    八.枚举与模式匹配
    七.结构体
  • 原文地址:https://www.cnblogs.com/wangerxiansheng/p/3836382.html
Copyright © 2011-2022 走看看