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练习——列出指定目录内容的更多相关文章
- 9.JAVA之GUI编程列出指定目录内容
代码如下: /*列出指定目录内容*/ import java.awt.Button; import java.awt.FlowLayout; import java.awt.Frame; import ...
- [javaSE] GUI(练习-列出指定目录内容)
获取Frame对象 获取TextField对象 获取TextArea对象 获取Button对象 调用Frame对象的add()方法,添加进去 调用TextField对象的getText()方法,可以获 ...
- 事件监听机制——列出指定目录内容、添加Dialog对话框
事件监听机制理解与Dialog练习 利用Java语言,仿照我的电脑目录进行打开目录,输入文件路径,查看该路径下所有的文件,设置两个文本框,一个转到按钮,当点击转到按钮时,查看路径是否正确,若正确在第二 ...
- Java基础---Java---IO流-----File 类、递归、删除一个带内容的目录、列出指定目录下文件夹、FilenameFilte
File 类 用来将文件或者文件夹封装成对象 方便对文件与文件夹进行操作. File对象可以作为参数传递给流的构造函数 流只用操作数据,而封装数据的文件只能用File类 File类常见方法: 1.创建 ...
- 获取小众ftp服务器指定目录内容列表
今天获取小众ftp服务器指定目录内容列表时费劲急了. ///parama url="ftp://x.x.x.x/dir_name" public string GetFTPDir( ...
- python3获取指定目录内容的详细信息
不同平台获取指定目录内容的详细信息命令各不相同: Linux中可以通过ls -al获取获取 windows中可以通过dir命令获取 下面是我写的一个通用获取目录内容详细信息的python3脚本: #! ...
- Python列出指定目录下的子目录/文件或者递归列出
1.python只列出当前目录(或者指定目录)下的文件或者目录条目 import os files,dirs=[],[] for item in os.listdir(): if os.path.is ...
- javaFile循环列出指定目录下的所有文件(源代码)
package javatest.basic22; import java.io.File; import java.io.IOException; public class FileTest { p ...
- Java图形界面开发—列出指定目录
代码如下: package com.packageTemp; import javax.swing.*; import java.awt.*; import java.awt.event.*; imp ...
随机推荐
- cocos2D(九)---- CCAction
之前介绍CCNode的时候说过,动作是指在特定时间内完毕移动.缩放.旋转等操作的行为,节点能够通过执行动作来实现动画效果,这里的动作就是指CCAction对象,它有非常多的子类,每一个子类都封装了不同 ...
- 如何使用eclipse生成javadoc帮助文档
---恢复内容开始--- 如果你已经能制造轮子了,你想让其他人使用你的轮子,那你就得告诉他们你的轮子都是由什么构成的.这样他们才能更好的使用你制造的轮子.然而,很多开发者都不想写长篇大论的帮助文档,这 ...
- iOS技术
iOS技术 OC:分类(好处,和延展的区别) 分类: 在不修改原有的类的基础上增加新的方法 一个庞大的类可以分模块开发 一个庞大的类可以由多个人来编写,更有利于团队合作 分类是对原有类的一种扩展,在 ...
- SQL Server表和字段说明的增加和更新
1. 增加字段说明 EXEC sp_addextendedproperty 'MS_Description', 'some description', 'user', ...
- gets()函数
基本信息: 可以无限读取,不会判断上限,以回车结束读取(这个换行符也被读取了),所以程序员应该确保buffer的空间足够大,以便在执行读操作时不发生溢出. 函数原型: char*gets(char*b ...
- 快速傅里叶变换FFT
多项式乘法 #include <cstdio> #include <cmath> #include <algorithm> #include <cstdlib ...
- Sprite Kit编程指南中文版下载
下载地址:http://download.csdn.net/detail/xin814/6032573 关于Sprite Kit 重要提示: 这是API或开发技术的一个初版文档.虽然本文档的技术准确 ...
- S3C6410嵌入式应用平台构建(五)——linux-3.14.4移植到OK6410-(Nand分区问题)
前一篇文章,我们的Linux能后启动了,只是在识别nand时候,没有获取到时钟源,导致后面的分区没哟进行. 我们从启动的log发现: [06/08-11:25:41:371]s3c24xx-nand ...
- Android建立模拟器进行调试
安装好android开发环境后.用到下面几个命令.android, adb, emulator android - 最主要的android命令.能够进行sdk更新,列出设备源,生成虚拟设备等. adb ...
- sql server dateadd()
定义和用法 DATEADD() 函数在日期中添加或减去指定的时间间隔. 语法 DATEADD(datepart,number,date) date 参数是合法的日期表达式.number 是您希望添加的 ...