事件监听机制——列出指定目录内容、添加Dialog对话框
事件监听机制理解与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对话框的更多相关文章
- Java基础--Java---IO流------GUI(布局)、Frame、事件监听机制、窗体事件、Action事件、鼠标事件、对话框Dialog、键盘事件、菜单
* 创建图形化界面 * 1.创建frame窗体 * 2.对窗体进行基本设置 * 比如大小.位置.布局 * 3.定义组件 * 4.将组件通过窗体的add方法添加到窗体 * 5.让窗体显 ...
- SpringBoot事件监听机制及观察者模式/发布订阅模式
目录 本篇要点 什么是观察者模式? 发布订阅模式是什么? Spring事件监听机制概述 SpringBoot事件监听 定义注册事件 注解方式 @EventListener定义监听器 实现Applica ...
- java Gui编程 事件监听机制
1. GUI编程引言 以前的学习当中,我们都使用的是命令交互方式: 例如:在DOS命令行中通过javac java命令启动程序. 软件的交互的方式: 1. 命令交互方式 图书管理系统 ...
- Spring ApplicationContext(八)事件监听机制
Spring ApplicationContext(八)事件监听机制 本节则重点关注的是 Spring 的事件监听机制,主要是第 8 步:多播器注册:第 10 步:事件注册. public void ...
- 9.JAVA之GUI编程列出指定目录内容
代码如下: /*列出指定目录内容*/ import java.awt.Button; import java.awt.FlowLayout; import java.awt.Frame; import ...
- 关于事件监听机制的总结(Listener和Adapter)
记得以前看过事件监听机制背后也是有一种设计模式的.(设计模式的名字记不清了,只记得背后实现的数据结构是数组.) 附上事件监听机制的分析图: 一个事件源可以承载多个事件(只要这个事件源支持这个事件就可以 ...
- Java中的事件监听机制
鼠标事件监听机制的三个方面: 1.事件源对象: 事件源对象就是能够产生动作的对象.在Java语言中所有的容器组件和元素组件都是事件监听中的事件源对象.Java中根据事件的动作来区分不同的事件源对象,动 ...
- Java swing(awt):事件监听机制的实现原理+简单示例
(1)实现原理 事件监听机制的实现: 参考图:事件模型_ActionEvent 为了节省资源,系统无法对某个事件进行实时的监听.故实现的机制是当发生某个事件后,处理代码将被自动运行,类似钩子一般.(回 ...
- java事件监听机制
1.简单的事件监听 package demo2; /* * java事件监听机制 */ import java.awt.*; import javax.swing.*; import java.awt ...
随机推荐
- .net 取当前代码的行号及类名称
取方法入口的行号及类名 //System.Diagnostics.StackTrace st = new System.Diagnostics.StackTrace(1, true); //int a ...
- WebService的缓存机制
分类: .NET ASP 2010-11-13 10:00 849人阅读 评论(0) 收藏 举报 webservicestring数据库nullapplicationweb服务 WebService的 ...
- ABP框架EF6链接Oracle数据库手动迁移
环境:VS2017 + ABP官方模板(不含Zero) +Oracle 11Gx64DB + Oracle 11Gx32Client(PLSQL工具访问) 一.Abp项目的下载以及运行 1.创建ab ...
- iOS开发之状态栏隐藏(问题篇)
一.基本应用 相信基本的隐藏办法网上很多,这里只简单说明一下 1⃣️改变全局状态栏 1.在项目的Info.plist文件里设置UIViewControllerBasedStatusBarAppeara ...
- Java Learning Path(三)过程篇
Java Learning Path(三)过程篇 每个人的学习方法是不同的,一个人的方法不见得适合另一个人,我只能是谈自己的学习方法.因为我学习Java是完全自学的,从来没有问过别人,所以学习的过程基 ...
- json对象和json字符串之间的转换-JavaScript实现
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...
- github上比較好的开源项目(持续更新)
1:https://github.com/Skykai521/StickerCamera 实现相机功能 实现对图片进行裁剪的功能 图片的滤镜功能 能为图片加入贴纸(贴纸可移动,放大,旋转) 能为图片加 ...
- Jenkins入门(一)
Jenkins就是一个Java Web应用,它主要是干什么呢? 其实很简单: 下载一个jenkins的war包,然后扔到tomcat 的webapps中,启动这个tomcat,访问jenkins应用即 ...
- u-boot-2014_04在TQ2440上的移植
本文详细介绍了新版本的u-boot-2014_04在tq2440平台上的移植过程,期间参考了网上的其他移植文档,还有韦东山的移植uboot视频,讲的很好.下面是共享链接,欢迎下载,一同学习.其中有移植 ...
- 一个简单的数据增量更新策略(Android / MongoDB / Django)
我在做个人APP - CayKANJI - 的时候遇到一个问题: 如何增量式地把日语汉字数据地从server更新到APP端,即每次用户运行更新操作时,仅仅获取版本号高于本地缓存的内容. 数据格式 为了 ...