--------------------ASP.Net+Android+IOS开发.Net培训、期待与您交流! --------------------

8.对话框

对列出目录内容增加了对话框提示,当输入不正确的路径后,报出异常,用对话框提示。同时当点击转到也能执行,或者是按回车键。

自定义类,定义了对话框。

package www.fuxi.GUI;

import java.awt.Button;
import java.awt.Dialog;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.Label;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
/*
* 自定义异常的对话框*/
public class MyFindDialog {
private Frame ff;
private Dialog dialog;
private String path;
private Button okBu;
private Label info; public MyFindDialog(Frame ff, String path) {
this.dialog = dialog;
this.path = path;
init();
} public void init() {
dialog = new Dialog(ff, "提示信息", true);// 设置对话框,true,为如果对话框不消失,那么就不能操作其他的
info = new Label("您输入的路径:" + path + "不存在");
okBu = new Button("确定");
dialog.setLocation(300, 200);// 位置
dialog.setLayout(new FlowLayout());// 设置布局
String textPath=info.getText();//为了,是对话框更形象
byte []text=textPath.getBytes();
dialog.setSize(text.length*20,100);
dialog.add(info);
dialog.add(okBu);
myEvent();
dialog.setVisible(true);// 可见 } private void myEvent() {
dialog.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
dialog.setVisible(false);// 不可见
}
});
okBu.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {
dialog.setVisible(false);// 不可见
} });
} }
import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
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; public class DirDemo { private Frame ff;// 窗体
private TextField text;// 文本框
private Button bu;// Button
private TextArea area;// 文本区域 public DirDemo() {
init();
} /* 初始化方法 */
public void init() {
/* 窗体设置 */
ff = new Frame("查看目录列表");
ff.setSize(400,500);// 设置大小
ff.setLocation(300,200);// 设置位置
ff.setLayout(new FlowLayout());// 设置布局 /* TextField设置 */
text = new TextField(40);// 初始化的时候指定列
ff.add(text);// 添加到窗体上
/* Button设置 */
bu = new Button("转到");
ff.add(bu);// 添加到窗体上
/* TextArea 设置 */
area = new TextArea(20, 50);
ff.add(area);// 添加到窗体上
myEvent();
ff.setVisible(true);// 设置显示
} /* 监听器和事件 */
public void myEvent() {
/* 设置窗体监听器 */
ff.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {// 关闭事件
System.out.println("窗体关闭");
System.exit(0);
}
});
/* 设置Button的监听器 */
bu.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {// 活动事件
showDir(); } }); /* 对文本框设置键盘监听器,当点击回车后,和Button的功能一样 */
text.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {// 按下事件
if (e.getKeyCode() == KeyEvent.VK_ENTER)
showDir();
}
});
} /* 把查看目录内容功能抽取出来,可以是用键盘监听器事件调用,也可以Button监听 */
private void showDir() {
String url = text.getText();// 或得TextField中的信息
area.setText("");
File dir = new File(url);
int count = 0;
if (dir.isDirectory()) {
String[] fileNames = dir.list();
for (String name : fileNames) {
count++;
area.append((new Integer(count)).toString() + ":-");
area.append(name);
area.append("\r\n"); }
} else {
new MyFindDialog(ff, url);// 自定义的处理路径异常的对话框
}
text.setText("");
} public static void main(String[] args) {
new DirDemo(); } }

9.记事本

1.  用到了菜单类:MenuBar,Menu,MenuItem,他们之间的关系见下图

2.  用到了文件对话框,打开和保存,FileDialog,可以设置模式,打开和保存。

3.  监听器

4.  流操作

package www.fuxi.GUI;

import java.awt.FileDialog;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.awt.TextArea;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException; /*记事本菜单功能下显示*/
public class MenuDemo {
private Frame frame;
private MenuBar bar;// 菜单栏可以里面添加 Menu,
private Menu Filemenu, ChildMenu;// 菜单例如:文件,编辑可以向里面添加MenuItem
private MenuItem OpenItem, CloseItem, SaveItem;// 菜单选项
// 可以在选项里面添加菜单,这样就是子菜单,也可以添加到Menu中
private FileDialog OpenFileDialog, SaveFileDialog;// 菜单对话框,可以是打开或者是保存。FileDialog.LOAD打开
// FileDialog.SAVE保存
private TextArea area;// 文本区域
private File file;// 文件 public MenuDemo() {
init();
} public void init() {
frame = new Frame("MY-MENU");
frame.setBounds(300, 100, 500, 600);// 设置位置和大小
// 布局默认是边界布局,这样可以不用调整文本区域的大小
bar = new MenuBar();// 菜单栏 Filemenu = new Menu("文件");// 文件菜单
OpenItem = new MenuItem("打开");// 打开选项
SaveItem = new MenuItem("保存");// 保存选项
CloseItem = new MenuItem("关闭");// 关闭选项 ChildMenu = new Menu("在菜单");// 子菜单
/* 向子菜单上添加选项 */
ChildMenu.add(new MenuItem("子选项"));
// 将菜单选项添加到菜单上
Filemenu.add(ChildMenu);// 将子菜单添加到文件菜单下
Filemenu.add(OpenItem);
Filemenu.add(SaveItem);
Filemenu.add(CloseItem);
// 将菜单添加到菜单栏上
bar.add(Filemenu);
// 将菜单栏添加到窗体上
frame.setMenuBar(bar);
// 设置可见窗体
MyEven();
area = new TextArea();// 文本区域
frame.add(area);
frame.setVisible(true);
} /* 监听器和事件 */
public void MyEven() {
/* 窗体监听器 */
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {// 关闭事件
System.exit(0);
}
});
/* 退出监听器,在退出选项上添加 */
CloseItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {// 活动事件
System.exit(0);
} });
/* 打开设置监听器,当打开时,出现打开对话框 */
OpenItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {// 打开事件
OpenFileDialog = new FileDialog(frame, "打开文件", FileDialog.LOAD);// 打开对话框
OpenFileDialog.setVisible(true);// 显示
String dirPath = OpenFileDialog.getDirectory();// 获取文件路径
String fileName = OpenFileDialog.getFile();// 获取文件名称
/* 文件不存在,则返回,不执行 */
if (dirPath == null || fileName == null) {
return;
}
area.setText("");// 初始化文本区域 file = new File(dirPath, fileName);// 定义文件
try {
BufferedReader br = new BufferedReader(new FileReader(file));
String line = null;
while ((line = br.readLine()) != null) {
area.append(line + "\r\n");
}
br.close();
} catch (FileNotFoundException e1) {
e1.printStackTrace();
} catch (IOException ex) { }
}
});
/* 保存监听器 */
SaveItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
SaveFileDialog = new FileDialog(frame, "保存文件", FileDialog.SAVE);// 保存对话框
if (file == null) {// 如果不存在就创建一个此文件,弹出保存对话框,如果存在就不需要创建,不必弹出保存对话框 SaveFileDialog.setVisible(true);// 显示
String dirPath = SaveFileDialog.getDirectory();// 获取文件路径
String fileName = SaveFileDialog.getFile();// 获取文件名称
/* 文件不存在,则返回,不执行 */
if (dirPath == null || fileName == null) {
return;
}
file = new File(dirPath, fileName);// 定义文件 }
try {
BufferedWriter bw = new BufferedWriter(new FileWriter(file));
String content = area.getText();
bw.write(content);// 写入流中
bw.flush();// 刷新
bw.close();// 这里也会刷新,前面的刷新也可以不写
} catch (IOException e1) {
e1.printStackTrace();
}
}
});
} public static void main(String[] args) {
new MenuDemo(); } }

结果:

--------------------ASP.Net+Android+IOS开发.Net培训、期待与您交流! --------------------

黑马程序员_<<GUI(图形用户管理)-----2>>的更多相关文章

  1. 黑马程序员_<<String类>>

    --------------------ASP.Net+Android+IOS开发..Net培训.期待与您交流! -------------------- 1. String类 1.概述 String ...

  2. 大数据-将MP3保存到数据库并读取出来《黑马程序员_超全面的JavaWeb视频教程vedio》day17

    黑马程序员_超全面的JavaWeb视频教程vedio\黑马程序员_超全面的JavaWeb教程-源码笔记\JavaWeb视频教程_day17-资料源码\day17_code\day17_1\ 大数据 目 ...

  3. 2016年8月17日 内省(1)18_黑马程序员_使用beanUtils操纵javabean

    8.内省(1):18_黑马程序员_使用beanUtils操纵javabean 1.导入两个包: 2.调用静态方法. 9.泛型 map.entrySet() :取出map集合的键值对组成一个set集合. ...

  4. 黑马程序员_高新技术之javaBean,注解,类加载器

    ----------- android培训.java培训.java学习型技术博客.期待与您交流! ---------- 第一部分 javaBean 一,由内省引出javaBean 1,内省: 内省对应 ...

  5. JavaWeb开发之四:servlet技术 黑马程序员_轻松掌握JavaWeb开发之四Servlet开发 方立勋老师视频教程相当的经典

    总结: 记住:servlet对象在应用程序运行的过程中只创建一次,浏览器每次访问的时候,创建reponse对象 request对象,然后调用servlet的service方法,reponse对象和re ...

  6. 黑马程序员_ JAVA中的多线程

    ------- android培训.java培训.期待与您交流! ---------- 尽管线程对象的常用方法可以通过API文档来了解,但是有很多方法仅仅从API说明是无法详细了解的. 本来打算用一节 ...

  7. 黑马程序员_ Objective-c 面向对象笔记详解

    1)类,对象,方法 类 类名: 1) 类名的第一个字母必须是大写 2) 不能有下划线 3) 多个英文单词,用驼峰标识 类的声明和实现 类的声明 @interface 类名 : NSObject { @ ...

  8. 黑马程序员_ Objective-c 概述及面向对象与三大特性

    -----------android培训.java培训.java学习型技术博客.期待与您交流!------------ (一).语法概述 1. oc介绍:(.m文件) 1> c语言的基础上,增加 ...

  9. 黑马程序员_ Objective-c 之block、protocol学习笔记

    一):block学习总结 block :用来保存一段代码. 1.block 特点:  1> Block封装了一段代码,可以在任何时候执行   2> Block可以作为函数或者函数的返回值, ...

  10. 黑马程序员——OC语言 类和对象

    Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) (一)类 1)类的声明 代码编写 ①定义一个Car类,拥有2个属性:轮子数 ...

随机推荐

  1. Page.ClientScript.RegisterStartupScript不执行问题

    c#后台使用Page.ClientScript.RegisterStartupScript在前台注册一段脚本提示,发现没有效果,寻寻觅觅,终于从度娘处找到了原因: 该页面多次使用到了Page.Clie ...

  2. XhProf安装教程–详细教程

    wget去这里找最新的包下载,我现在最新的是xhprof-0.9.4.tgz cd /tmp mkdir xhprof && cd xhprof wget http://pecl.ph ...

  3. root 密码丢失后的重新设置

    /usr/local/mysql/bin/mysqld_safe --skip-grant-tables & mysql> use mysql; mysql> update use ...

  4. C++ xmmp IM开发笔记(一)

    XMMP C++库采用 gloox (client) 下载地址:http://camaya.net/download/gloox-1.0.11.tar.bz2 glooxd (server) 下载地址 ...

  5. 桂电在线-转变成bootstrap版2(记录学习bootstrap)

    下载bootstrap框架https://github.com/twbs/bootstrap 或者 http://getbootstrap.com/ 拷贝模板 修改基本模板 语言zh-cn,标题,描述 ...

  6. 学习Swift -- 可选链

    可空链式调用 可空链式调用是一种可以请求和调用属性.方法及下标的过程,它的可空性体现于请求或调用的目标当前可能为空(nil).如果可空的目标有值,那么调用就会成功:如果选择的目标为空(nil),那么这 ...

  7. java特点

    简单: Java语言的语法与C语言和C++语言很接近,使得大多数程序员很容易学习和使用.另一方面,Java丢弃了C++中很少使用的.很难理解的.令人迷惑的那些特性,如操作符重载.多继承.自动的强制类型 ...

  8. 运行从别处复制过来的linux可执行程序

    1, 首先ldd看看缺不缺so文件,如果不缺可忽略下面的文字,直接执行 2, 先看看缺的这些库在系统上有没有,这些库可通过安装开发包,第三方软件进行安装 3, 找到可能会包含这些库的可执行程序,ldd ...

  9. css filter详解

    css filter详解 filter 属性详解 属性 名称 类型 说明 grayscale 灰度 值为数值 取值范围从0到1的小数(包括0和1) sepia 褐色 值为数值 取值范围从0到1的小数( ...

  10. shuffle ----- mr 董西城

    http://dongxicheng.org/framework-on-yarn/apache-spark-shuffle-details/