在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. webform 简单控件

    html中12个表单元素添加runat="server"后称为控件 Lable 编译之后是 <span></span> 属性:CssClass  编译成 c ...

  2. Hibernate 二级缓存的配置及使用_EhCache

    大多数的应用程序中都会添加缓存模块,以减少数据库访问次数,同时增加响应速度.下面介绍一下hibernate的二级缓存.默认情况下hibernate的二级缓存是不开启的,我们需要手动配置并启用. 注: ...

  3. [sourceTree]这是一个无效的源路径

    解决方法:工具 ——>选项  ——> git, 启用git 就可以了.

  4. PHP 常用的header头部定义汇总

    <?phpheader('HTTP/1.1 200 OK'); // ok 正常访问header('HTTP/1.1 404 Not Found'); //通知浏览器 页面不存在header(' ...

  5. AutoIt操作Windows GUI实现文件上传

    AutoIt 一个使用类似BASIC脚本语言的免费软件,用于Windows GUI(图形用户界面)中进行自动化操作.它利用模拟键盘按键,鼠标移动和窗口/控件的组合来实现自动化任务. 官方网站: htt ...

  6. 20145220&20145209&20145309信息安全系统设计基础实验报告(5)

    20145220&20145209&20145309信息安全系统设计基础实验报告(5) 实验报告链接: http://www.cnblogs.com/zym0728/p/6132249 ...

  7. [bzoj2463]谁能赢呢

    我们通过观察可以发现,当n为偶数时,一定可以转化为一种先手必胜态,即棋盘可以被骨牌所覆盖, 如果n是奇数,那么去掉一格后一定能被1*2的骨牌覆盖,但是先手从左上角走,就进入了这个S态(必胜态),那么和 ...

  8. java线程同步 以及wait 和notify用法

    package test; public class ThreadTest2 extends Thread { private int threadNo; private String lock; p ...

  9. ssh 文件权限影响登录

    进入/etc/ssh目录 需要保证文件访问控制权限如下: ssh_host_dsa_key 600 ssh_host_ras_key 600

  10. Elong App 性能测试分享

    个人简介: 测试老鸟,曾做过6年的测试以及2年的大数据开发:曾就职于伟景行.高德(大数据开发):钟情于钻研开源测试框架:目前挂单于艺龙. 有对本主题感兴趣的同学,可以加我Q私信(305285925): ...