事件监听机制理解与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+"\r\n");这样的话会被替代
ta.append(name+"\r\n");
}
}
else
{
String info="您输入的信息"+dirPath+"是错误的,请重输";
lab.setText(info);
d.setVisible(true);
}
} public static void main(String[] args)
{
new MyWindowDemo();
}
}

效果图:

事件监听机制——列出指定目录内容、添加Dialog对话框的更多相关文章

  1. Java基础--Java---IO流------GUI(布局)、Frame、事件监听机制、窗体事件、Action事件、鼠标事件、对话框Dialog、键盘事件、菜单

     * 创建图形化界面  * 1.创建frame窗体  * 2.对窗体进行基本设置  *   比如大小.位置.布局  * 3.定义组件  * 4.将组件通过窗体的add方法添加到窗体  * 5.让窗体显 ...

  2. SpringBoot事件监听机制及观察者模式/发布订阅模式

    目录 本篇要点 什么是观察者模式? 发布订阅模式是什么? Spring事件监听机制概述 SpringBoot事件监听 定义注册事件 注解方式 @EventListener定义监听器 实现Applica ...

  3. java Gui编程 事件监听机制

    1.     GUI编程引言 以前的学习当中,我们都使用的是命令交互方式: 例如:在DOS命令行中通过javac java命令启动程序. 软件的交互的方式:   1. 命令交互方式    图书管理系统 ...

  4. Spring ApplicationContext(八)事件监听机制

    Spring ApplicationContext(八)事件监听机制 本节则重点关注的是 Spring 的事件监听机制,主要是第 8 步:多播器注册:第 10 步:事件注册. public void ...

  5. 9.JAVA之GUI编程列出指定目录内容

    代码如下: /*列出指定目录内容*/ import java.awt.Button; import java.awt.FlowLayout; import java.awt.Frame; import ...

  6. 关于事件监听机制的总结(Listener和Adapter)

    记得以前看过事件监听机制背后也是有一种设计模式的.(设计模式的名字记不清了,只记得背后实现的数据结构是数组.) 附上事件监听机制的分析图: 一个事件源可以承载多个事件(只要这个事件源支持这个事件就可以 ...

  7. Java中的事件监听机制

    鼠标事件监听机制的三个方面: 1.事件源对象: 事件源对象就是能够产生动作的对象.在Java语言中所有的容器组件和元素组件都是事件监听中的事件源对象.Java中根据事件的动作来区分不同的事件源对象,动 ...

  8. Java swing(awt):事件监听机制的实现原理+简单示例

    (1)实现原理 事件监听机制的实现: 参考图:事件模型_ActionEvent 为了节省资源,系统无法对某个事件进行实时的监听.故实现的机制是当发生某个事件后,处理代码将被自动运行,类似钩子一般.(回 ...

  9. java事件监听机制

    1.简单的事件监听 package demo2; /* * java事件监听机制 */ import java.awt.*; import javax.swing.*; import java.awt ...

随机推荐

  1. Oracle 为表空间增加数据文件

    dba权限检查下 select tablespace_name, file_id, file_name, ),) total_space from dba_data_files order by ta ...

  2. zabbix web monitoring 监控网页

    配置 Web 场景 配置 web 场景: 转到: 配置 (Configuration)–>主机 (或者 模板 ) 点击主机 (host)/ 模板 (template) 行中的 Web 点击右上角 ...

  3. smali 语法参考

    原文见:http://www.blogjava.net/midea0978/archive/2012/01/04/367847.html Dalvik opcodes Author: Gabor Pa ...

  4. 第九节: 利用RemoteScheduler实现Sheduler的远程控制 第八节: Quartz.Net五大构件之SimpleThreadPool及其四种配置方案 第六节: 六类Calander处理六种不同的时间场景 第五节: Quartz.Net五大构件之Trigger的四大触发类 第三节: Quartz.Net五大构件之Scheduler(创建、封装、基本方法等)和Job(创建、关联

    第九节: 利用RemoteScheduler实现Sheduler的远程控制   一. RemoteScheduler远程控制 1. 背景: 在A服务器上部署了一个Scheduler,我们想在B服务器上 ...

  5. 从两张Excel表所想到的

    从两张Excel表所想到的 前几日,客服妹子发过来几张表,让我给她做下匹配,然后做了,想了,便有了这篇博文,不由感慨,看似简简单单的两张Excel表其实藏着好多东西,记叙如下,与君共勉. 最初的需求: ...

  6. win 下g++ 安装、环境配置等

    工具:eclipse for c++: 由于eclipse没有集成c++的编译器及执行环境,所以须要自己额外安装g++等. 方法: 使用MinGW来下载和安装须要的工具: 下载地址:http://ww ...

  7. 基于 ZooKeeper 搭建 Hadoop 高可用集群

    一.高可用简介 二.集群规划 三.前置条件 四.集群配置 五.启动集群 六.查看集群 七.集群的二次启动 一.高可用简介 Hadoop 高可用 (High Availability) 分为 HDFS ...

  8. Python内置函数之staticmethod()

    staticmethod(function)返回函数的静态方法.一般来说,实例对象调用类方法不用传入参数,因为实例对象本身隐式的作为第一个参数传入了.而采用静态方法之后,实例对象在调用类方法时必须传入 ...

  9. iOS 多网络请求同步并发

    iOS中经常会用到多线程,在多线程中有一个线程组的概念(group),创建多个线程组任务,多组任务都完成之后,就会进入dispatch_group_notify队列中. 同时多线程中还有一个信号量的概 ...

  10. Swift中文教程(七)--协议,扩展和泛型

    Protocols and Extensions 协议(接口)和扩展 Swift使用关键字protocol声明一个协议(接口): 类(classes),枚举(enumerations)和结构(stru ...