--------------------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. C++专题 - Qt是什么

    Qt是一个1991年由奇趣科技开发的跨平台C++图形用户界面应用程序开发框架.它既可以开发GUI程式,也可用于开发非GUI程式,比如控制台工具和服务器.Qt是面向对象的框架,使用特殊的代码生成扩展(称 ...

  2. 原生与jqueryDOM

    总结与复习原生与jquery的DOM操作. 获取元素节点: $(".class") $("#id") $(".class div") $(& ...

  3. 一天学完UFLDL

    学习UFLDL笔记 第一节 神经网络 神经元长这样 大写W看着有点不习惯.. 激活函数, 就是上面式子中的f. 可以选 sigmoid函数(或者叫 logistic回归,对数几率函数),反正就是这样一 ...

  4. 左偏树(Leftist Heap/Tree)简介及代码

    左偏树是一种常用的优先队列(堆)结构.与二叉堆相比,左偏树可以高效的实现两个堆的合并操作. 左偏树实现方便,编程复杂度低,而且有着不俗的效率表现. 它的一个常见应用就是与并查集结合使用.利用并查集确定 ...

  5. js隔行变色

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. 浅谈ListBox控件,将对象封装在listBox中,在ListBox中显示对象中某个属性,在ListBox中移除和移动信息

    大家好,俗称万事开头难,不经历风雨,怎能见彩虹.在此小编给大家带来一个自己练习的小实例,希望与大家一起分享与交流.下面进入应用场景,从SQL2008数据库取出数据,给ListBox赋值在界面并显示出来 ...

  7. ecshop标签

    页面标题         {$page_title}页面关键字       {$keywords}     产品分类                 父分类列表 {foreach from=$cate ...

  8. Python 手册——调用解释器

    通常Python的解释器被安装在目标机器的 /usr/local/bin/python 目录下:把 /usr/local/bin 目录放进你的UNIX Shell 的搜索路径里,确保它可以通过输入py ...

  9. 很少有人知道的c++中的try块函数

    c++有一些在现实世界中很少看到的结构.这些结构有着自己的用法,但是要特别小心保守的予以运用.就像是网站 The Old New Thing首页标题上面的说的那样: “代码通常被读的次数原因超过了被写 ...

  10. Linux相关命令

    使用的是ubuntu 安装JDK   输入java 命令会有提示安装的软件列表 sudo apt-get install openjdk-6-jdk sudo rm file名 删除文件 sudo r ...