事件监听机制理解与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. 谈谈PHP网站的防SQL注入

    SQL(Structured Query Language)即结构化查询语言.SQL 注入,就是把 SQL 命令插入到 Web 表单的输入域或页面请求参数的查询字符串中,在 Web表单向 Web 服务 ...

  2. Android适配方案小结(二)

    该节主要记录从代码中获取与屏幕适配相关的各个參数: Java代码例如以下 public class ScreenUtil { /** * Note: * 仅仅有activity能够使用getWindo ...

  3. nginx uri和request_uri区别

    $request_uri This variable is equal to the *original* request URI as received from the client includ ...

  4. Atitit.jdk java8的语法特性详解 attilax 总结

    Atitit.jdk java8的语法特性详解 attilax 总结 1.1. 类型推断这个特别有趣的.鲜为人知的特性1 2. Lambda1 2.1. 内部迭代意味着改由Java类库来进行迭代,而不 ...

  5. Active Directory的基本概念

    前言 本文是面对准备加入Active Directory编程的初学者的一份文章,主要是讲解Active Directory(活动目录)的一些概念和相关知识.这篇文章本来是不想写下来的,因为概念性内容的 ...

  6. Android遇到的那些坑

    1.输出log Log.i("GOOD",v.getId()+"");

  7. centos6.5安装Apache+MySQL+PHP

    一.安装 MySQL 首先来进行 MySQL 的安装.打开超级终端,输入: [root@localhost ~]# yum install mysql mysql-server 安装完毕,让 MySQ ...

  8. python视频教程大全(转载)

    python3英文视频教程(全87集) http://pan.baidu.com/s/1dDnGBvV python从入门到精通视频(全60集)链接:http://pan.baidu.com/s/1e ...

  9. Project Euler:Problem 87 Prime power triples

    The smallest number expressible as the sum of a prime square, prime cube, and prime fourth power is ...

  10. 通过Lock对象以及Condition对象实现多线程同步

    通过Lock对象以及Condition对象实现多线程同步: 在之前的学习中,无论是通过synchronized建立同步代码块,还是通过synchronized建立同步函数,都是把对象看成一把锁来实现同 ...