二十二、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& ...
随机推荐
- VS2013 配置pthread
参考:http://blog.csdn.net/qianchenglenger/article/details/16907821 一.下载地址 ftp://sourceware.org/pub/pth ...
- iOS 常用的向上,向下取整, 四舍五入函数
向上取整:ceil(x),返回不小于x的最小整数; 向下取整:floor(x),返回不大于x的最大整数; 四舍五入:round(x) 截尾取整函数:trunc(x)
- 下载php扩展笔记
查找相关php的扩展网址https://pecl.php.net/index.php PECL 的全称是 The PHP Extension Community Library ,即PHP 扩展库.是 ...
- UUID
首先我们要知道UUID是什么?有什么用?为什么要使用它? UUID是什么? UUID 的目的,是让分布式系统中的所有元素,都能有唯一的辨识资讯,而不需要透过中央控制端来做辨识资讯的指定.如此一来,每个 ...
- 榮耀6 Plus將是一部沒有對手的手機
華為榮耀官方微博發佈消息正式確定了年度旗艦新品將命名為榮耀6 Plus,據稱,該機將是“2014年度最最旗艦手機”,並將集“科學與美學一身”.“探索幾何與視覺極限”,同時,官方微博還不低調地宣稱該機將 ...
- PHP 生成PDF
一个项目中需要用到网页生成PDF,就是将整个网页生成一个PDF文件, 以前也用过HTML2PDF,只能生成一些简单的HTML代码,复杂的HTML + css 生成的效果惨不忍睹, 百度了一下,发现有个 ...
- 下载更新文件后,调用安装器自动安装apk文件
在更新操作时,下载新apk之后,往往需要自动安装新apk,用以下代码即可安装下载在本地的apk文件(apkFile) Intent intent = new Intent(); intent.setA ...
- mysql5.1升级到mysql5.6
这么大跨度的升级,本身不推荐.升级应该是循序渐进的,以防止不兼容.如果确实要这么做,你先要确保你的客户端管理工具要能兼容,比如phpmyadmin,此次升级依然存在一个问题,mysql server和 ...
- 源码网站(msdn.itellyou.cn) good
verysource 100万源码http://www.verysource.com/category/delphi-vcl/ MSDN DOWNLOADhttp://msdn.itellyou.cn ...
- golang: 常用数据类型底层结构分析
虽然golang是用C实现的,并且被称为下一代的C语言,但是golang跟C的差别还是很大的.它定义了一套很丰富的数据类型及数据结构,这些类型和结构或者是直接映射为C的数据类型,或者是用C struc ...