在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入门的更多相关文章

  1. 二十、Java基础--------IO流之其他对象

    在上面两篇文章中介绍了IO体系并详细介绍了字节流以及字符流,本文主要是讲述操作文件的File.转化流.标准输入与输出.Properties.打印流以及序列流. File File英文为"文件 ...

  2. JAVA基础知识总结:一到二十二全部总结

    >一: 一.软件开发的常识 1.什么是软件? 一系列按照特定顺序组织起来的计算机数据或者指令 常见的软件: 系统软件:Windows\Mac OS \Linux 应用软件:QQ,一系列的播放器( ...

  3. Java实习生常规技术面试题每日十题Java基础(二)

    目录 1. JAVA 的反射机制的原理. 2.静态嵌套类(Static Nested Class)和内部类(Inner Class)的不同? 3.如何将String类型转化成Number类型. 4.什 ...

  4. Bootstrap <基础二十二>超大屏幕(Jumbotron)

    Bootstrap 支持的另一个特性,超大屏幕(Jumbotron).顾名思义该组件可以增加标题的大小,并为登陆页面内容添加更多的外边距(margin).使用超大屏幕(Jumbotron)的步骤如下: ...

  5. Bootstrap入门(二十二)组件16:列表组

    Bootstrap入门(二十二)组件16:列表组 列表组是灵活又强大的组件,不仅能用于显示一组简单的元素,还能用于复杂的定制的内容. 1.默认样式列表组 2.加入徽章 3.链接 4.禁用的列表组 5. ...

  6. JAVA之旅(二十二)——Map概述,子类对象特点,共性方法,keySet,entrySet,Map小练习

    JAVA之旅(二十二)--Map概述,子类对象特点,共性方法,keySet,entrySet,Map小练习 继续坚持下去吧,各位骚年们! 事实上,我们的数据结构,只剩下这个Map的知识点了,平时开发中 ...

  7. Java进阶(二十五)Java连接mysql数据库(底层实现)

    Java进阶(二十五)Java连接mysql数据库(底层实现) 前言 很长时间没有系统的使用java做项目了.现在需要使用java完成一个实验,其中涉及到java连接数据库.让自己来写,记忆中已无从搜 ...

  8. 二十六. Python基础(26)--类的内置特殊属性和方法

    二十六. Python基础(26)--类的内置特殊属性和方法 ● 知识框架 ● 类的内置方法/魔法方法案例1: 单例设计模式 # 类的魔法方法 # 案例1: 单例设计模式 class Teacher: ...

  9. 二十五. Python基础(25)--模块和包

    二十五. Python基础(25)--模块和包 ● 知识框架   ● 模块的属性__name__ # my_module.py   def fun1():     print("Hello& ...

随机推荐

  1. First step to Signal —— in Linux C Programing

    1. What's signal 信号是软件中断,提供了一种处理异步事件的方法.(见<Unix环境高级编程>)一般使用时需包含 signal.h 库. 每个信号命名由SIG开头,实际值为正 ...

  2. 13.final关键字

    1.final修饰的变量只能赋一次值,不赋值时,会提示初始化 2.final修饰的方法不能被重写 3.final修饰的类不能被继承

  3. include、require、include_once和require_once理解

    都是在当前文件中包含引入并运行指定文件,include和require的不通之处仅仅在于发生错误时include产生一个警告脚本继续执行,而require产生一个致命的错误,脚本停止运行.有了once ...

  4. 让javascript显原型!

    相信以下的javascript让你读起来痛苦不已,告诉你一下简单的办法,就可以让它显出原型!将第一个单词,即eval换成document.write,然后再运行一下,它立即就原形毕露了! eval(f ...

  5. php数字索引数组去重及恢复索引

    $tmp = array('a','b','c','a'); $tmp = array_values(array_unique($tmp)); print_r($tmp);exit; //输出 Arr ...

  6. JS检测移动端横竖屏

    (function () {                                var supportOrientation = (typeof window.orientation == ...

  7. JQuery中的选择器的总结

    JQuery的选择器十分的强大,但是我平常经常用到的却十分的有限,趁现在有时间我感觉有必要总结一下. 基本选择器 $("#ID") 选择ID所对应的标签元素 返回一个标签元素$(& ...

  8. JavaScript之ES6

    ECMAScript 6(以下简称ES6)是JavaScript语言的下一代标准.因为当前版本的ES6是在2015年发布的,所以又称ECMAScript 2015. 也就是说,ES6就是ES2015. ...

  9. 转摘 MySQL扫盲篇

    一下文章摘自:http://www.jellythink.com/archives/636 MySQL扫盲篇 2014-09-15 分类:MySQL / 数据库 阅读(1412) 评论(1)  为什么 ...

  10. MSSQL 全表搜索 指定字符串

    平时在在MSSql中查询数据的时候,想查找,某个字段在数据库中是否存在,并且查询出在哪个表中,哪个字段下面,在不知道的情况下,操作起来会很麻烦,然后就写了一个sql语句,使用起来感觉挺方便的.当然了, ...