在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+" "); } 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(); } }
运行效果: