二十二、Java基础--------GUI入门
在java学习过程中GUI是一个比较特殊的知识体系(笔者对安卓不是很了解),似乎在为安卓的学习做着准备,本文将将展示一个综合案例。
创建一个类似于记事本的程序,包含打开与保存功能。
package GUI; import java.awt.FileDialog;
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.FileReader;
import java.io.FileWriter; public class MyMenu2 {
private Frame f;//声明窗体
private MenuBar bar;//声明一个bar,表示工具条,比如:文件、Edit、Source等等
private TextArea ta;//文本区域,用于显示打开文件的内容
private Menu filebMenu;//我的理解是为上面的bar命名,当然还包含一个添加选项的功能。。。。。。不是很清楚
private FileDialog openDia,SaveDia;//打开新的对话框、与保存时出现的对话框
private MenuItem closeItem,saveItem,openItem;//三个选项,用以触发关闭,保存,打开事件
private File file;
MyMenu2()
{
init();
}
void init(){
f=new Frame("my farme");//窗体的名称
f.setBounds(300,100,650,600);//setBounds(int x, int y, int width, int height)
// f.setLayout(new FlowLayout());
bar=new MenuBar();
filebMenu=new Menu("文件"); openItem=new MenuItem("打开");
saveItem=new MenuItem("保存");
closeItem=new MenuItem("退出");
ta=new TextArea(); filebMenu.add(openItem);//将打开、保存、关闭对话框附加到工具条上
filebMenu.add(saveItem);
filebMenu.add(closeItem);
bar.add(filebMenu);//将工具条附加到bar上。
f.setMenuBar(bar);//将bar添加到窗体上
f.setVisible(true);//设置窗体可见
openDia=new FileDialog(f,"我要打开",FileDialog.LOAD);//定义一个打开的窗体对象
SaveDia=new FileDialog(f,"我要保存",FileDialog.SAVE);//定义一个打开保存文件的对象
f.add(ta);//将文本附加到窗体
myEvent();
}
//定义一些列事件,用于处理不同的请求
public void myEvent(){
/*
* 处理打开触发器
* 1、打开窗体可见
* 2、获取文件的路径以及文件名
* 3、读取文件
* 4、将文件内容显示到文本区域
* */
openItem.addActionListener(new ActionListener() { @Override
public void actionPerformed(ActionEvent e) {
//使打开对话框可见
openDia.setVisible(true);
String dirPath=openDia.getDirectory();
String fileName=openDia.getFile();
System.out.println(dirPath+":"+fileName);
if(dirPath==null||fileName==null)
return;
File file=new File(dirPath,fileName);
try{
ta.setText("");
BufferedReader br=new BufferedReader(new FileReader(file));
String temp="";
while((temp=br.readLine())!=null){
ta.append(temp+"\r\n");
}
br.close(); }catch (Exception ex) {
ex.printStackTrace();
} }
});
/*
* 处理保存触发器的内容
* */
saveItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if(file==null)
{
SaveDia.setVisible(true);
String dirPath=SaveDia.getDirectory();
String fileName=SaveDia.getFile();
if(dirPath==null||fileName==null)
return;
file=new File(dirPath,fileName); }
try{
BufferedWriter bw=new BufferedWriter(new FileWriter(file));
String text=ta.getText();
bw.write(text);
bw.close();
}
catch (Exception ex) {
throw new RuntimeException();
} }
});
/*
* 处理关闭触发器
* */
closeItem.addActionListener(new ActionListener() { @Override
public void actionPerformed(ActionEvent e) {
System.exit(0); }
}); /*
* 处理点击窗体上的 ‘X' 时的事件
* */
f.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
} });
}
public static void main(String[] args) {
MyMenu2 menu=new MyMenu2();
}
}
运行效果:


二十二、Java基础--------GUI入门的更多相关文章
- 二十、Java基础--------IO流之其他对象
在上面两篇文章中介绍了IO体系并详细介绍了字节流以及字符流,本文主要是讲述操作文件的File.转化流.标准输入与输出.Properties.打印流以及序列流. File File英文为"文件 ...
- JAVA基础知识总结:一到二十二全部总结
>一: 一.软件开发的常识 1.什么是软件? 一系列按照特定顺序组织起来的计算机数据或者指令 常见的软件: 系统软件:Windows\Mac OS \Linux 应用软件:QQ,一系列的播放器( ...
- Java实习生常规技术面试题每日十题Java基础(二)
目录 1. JAVA 的反射机制的原理. 2.静态嵌套类(Static Nested Class)和内部类(Inner Class)的不同? 3.如何将String类型转化成Number类型. 4.什 ...
- Bootstrap <基础二十二>超大屏幕(Jumbotron)
Bootstrap 支持的另一个特性,超大屏幕(Jumbotron).顾名思义该组件可以增加标题的大小,并为登陆页面内容添加更多的外边距(margin).使用超大屏幕(Jumbotron)的步骤如下: ...
- Bootstrap入门(二十二)组件16:列表组
Bootstrap入门(二十二)组件16:列表组 列表组是灵活又强大的组件,不仅能用于显示一组简单的元素,还能用于复杂的定制的内容. 1.默认样式列表组 2.加入徽章 3.链接 4.禁用的列表组 5. ...
- JAVA之旅(二十二)——Map概述,子类对象特点,共性方法,keySet,entrySet,Map小练习
JAVA之旅(二十二)--Map概述,子类对象特点,共性方法,keySet,entrySet,Map小练习 继续坚持下去吧,各位骚年们! 事实上,我们的数据结构,只剩下这个Map的知识点了,平时开发中 ...
- Java进阶(二十五)Java连接mysql数据库(底层实现)
Java进阶(二十五)Java连接mysql数据库(底层实现) 前言 很长时间没有系统的使用java做项目了.现在需要使用java完成一个实验,其中涉及到java连接数据库.让自己来写,记忆中已无从搜 ...
- 二十六. Python基础(26)--类的内置特殊属性和方法
二十六. Python基础(26)--类的内置特殊属性和方法 ● 知识框架 ● 类的内置方法/魔法方法案例1: 单例设计模式 # 类的魔法方法 # 案例1: 单例设计模式 class Teacher: ...
- 二十五. Python基础(25)--模块和包
二十五. Python基础(25)--模块和包 ● 知识框架 ● 模块的属性__name__ # my_module.py def fun1(): print("Hello& ...
随机推荐
- extjs4 各种怪异问题
用extjs4 已经有一段时间了,过去开发的时候用过extjs2.2 因为放下了两年所有很多东西记得不是很清楚了,现在又直接使用4 突然发现这个世界变得太快连代码都变得这么快,大部分东西都完全不一样了 ...
- bootstrap css总结
base css 我分为了几大类 1,列表 .unstyled(无样式列表),.dl-horizontal(dl列表水平排列) 2,代码 code(行级),pre(块级),.pre-scrollabl ...
- mysql导入大文件sql
备份mysqldump mysqldump -u root -p ao2012 > /mnt/www/zq_ao2012/backup.sql 然后数据库密码 导入 mysql -h local ...
- Source Insight 3.X utf8支持插件震撼发布
继上次SI多标签插件之后,因为公司内部编码改为utf8编码,因此特意做了这个Source Insight 3.X utf8插件. 下载地址:[点我] 安装说明: 解压msimg32.dll sihoo ...
- Ubuntu上安装Karma失败对策
在Ubuntu上安装Karma遇到超时 timeout 错误.Google了一下,国外的码农给了一个快捷的解决方案,实测可行,贴在这里: sudo apt-get install npm nodejs ...
- Win2008R2+java+tomcat安装
Win2008R2+java+tomcat安装 准备软件: jdk-7u25-windows-x64.exe apache-tomcat-7.0.42-windows-x64.zip 一.安装java ...
- Hibernate操作指南-搭建一个简单的示例(基于原生API和注解)
- Windows Server 2008 R2安装子域控制器
一.实验网络拓扑图: 二.实验说明: 子域控制器安装前需要先把主域控制器安装好,然后子域控制器的DNS先指向主域控制器的IP地址 192.168.10.30,主域控制器委派DNS给子域控制器后再把子域 ...
- 使用命令行 Subversion 访问项目源文件(SVN)
from:http://www.open.collab.net/scdocs/ddUsingSVN_command-line.html.zh-cn 命令行 Subversion 入门 如果您参与的项目 ...
- XPath 语法
XPath 使用路径表达式来选取 XML 文档中的节点或节点集.节点是通过沿着路径 (path) 或者步 (steps) 来选取的. XML 实例文档 我们将在下面的例子中使用这个 XML 文档. & ...