java.awt简易小程序
package com.guiAWT; import java.awt.Button; import java.awt.Dialog; import java.awt.FlowLayout; import java.awt.Frame; import java.awt.Label; import java.awt.TextArea; import java.awt.TextField; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.io.File; /*** * 练习:文本框填写目录,点按钮后,将该目录下的文件和目录显示在文本区域中。 * @author caojsvm * 运用到TextField、TextArea、Button、Dialog,以及事件 * * 窗体上的中文都显示方框的解决办法: * 点击MyEclipse的菜单【run】---【runConfigurations...】---窗口选项卡【Arguments】----[VM arguments:]文本框中填入:-Dfile.encoding=gbk * 即可解决 */ public class FramePractice { private Frame f; private Button butt3; private TextField tf; private TextArea ta; private Dialog dg; private Label dgLab; private Button dgButt; public FramePractice() { //初始化 init(); } //初始化参数 private void init() { this.f = new Frame("FrameDemo"); /*************对Frame进行基本设置****************/ //设置位置坐标、窗口大小: void setBounds(int x, int y, int width, int height) this.f.setBounds(600, 400, 500, 300); //更改布局管理器 this.f.setLayout(new FlowLayout()); //初始化组件 butt3 = new Button("to"); //长度为10的文本框 //初始化的时候只能传入列数 tf = new TextField(20); //初始化TextArea文本区域 ta = new TextArea(10,60); //添加组件 this.f.add(tf); this.f.add(butt3); this.f.add(ta); //加载窗体及组件的事件 myEvent(); //显示窗口 this.f.setVisible(true); } /*** * 给窗体和组件添加事件 */ private void myEvent() { //给窗体添加事件 //查阅Frame类的父类Window的方法找到添加监听方法 //查阅WindowListener监听API发现,这个接口有很多方法,所以找其适配器(实现类)WindowAdapter。 //一般接口超过3个方法,都会有对应的适配器。 this.f.addWindowListener( new WindowAdapter() { //关闭窗口 public void windowClosing(WindowEvent e) { System.out.println("关闭窗口"); System.exit(0); } } ); this.butt3.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { System.out.println("点 我(butt3) 了 ....."); String filePath = tf.getText(); System.out.println("filePath="+filePath); //接收到文本框的数据后,将文本框的数据清空 tf.setText(""); readDir(filePath); } }); //给文本框添加键盘事件 this.tf.addKeyListener(new KeyAdapter() { public void keyPressed(KeyEvent e) { //System.out.println("键盘数据"); //判断在文本框中按数字键接收数据 int code = e.getKeyCode(); if(code == e.VK_ENTER){ System.out.println("键盘按键:回车,开始执行数据"); String filePath = tf.getText(); System.out.println("filePath="+filePath); //接收到文本框的数据后,将文本框的数据清空 tf.setText(""); readDir(filePath); } } }); } /** * 根据传入目录获取子目录和文件 * @param filePath */ private void readDir(String filePath){ File fr = new File(filePath); //要判断:1、目录是否存在 2、是个目录 if(!(fr.exists())){ //System.out.println("填写的文件目录不存在。"); ta.setText("Error: 填写的文件目录不存在。"); //弹出对话框 dialogInit(); //初始化 dgLab.setText("Error: input dir:"+filePath+" ,is not exists!"); dg.setVisible(true); //弹出 return; } if(!(fr.isDirectory())){ ta.setText("Error: 填写的不是一个目录。"); //弹出对话框 dialogInit(); //初始化 dgLab.setText("Error: input dir:"+filePath+" , is not directory!"); dg.setVisible(true); //弹出 return; } //每次存入新数据时先清空一下文本区域 ta.setText(""); String[] filesName = fr.list(); for(int i=0; i<filesName.length; i++){ //追加文本,此方法会把前面的操作数据累加,所以每次追加之前把内容清空一下 ta.append(filesName[i]+"\r\n"); } } /** * 初始化对话框 */ private void dialogInit(){ dg = new Dialog(f,"提示信息-myself",true); dgLab = new Label(); dgButt = new Button("confirm"); //设置对话框布局 dg.setLayout(new FlowLayout()); //设置对话框坐标及大小 dg.setBounds(700,500,200,100); //添加对话框中的组件 dg.add(dgLab); dg.add(dgButt); //加载对话框事件 dialogEvent(); } /** * 定义对话框事件 */ private void dialogEvent() { dg.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.out.println("点对话框X,关闭对话框"); dg.setVisible(false); } }); dgButt.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { System.out.println("点按钮,关闭对话框"); dg.setVisible(false); } }); } /** * @param args */ public static void main(String[] args) { new FramePractice(); } }