简单的打开 保存文件 小记事本
import java.awt.*; import java.awt.event.*; import java.io.*; class MenuDemo { private Frame f; //菜单组件 可添加菜单项及菜单组件 private Menu m,m1,m2; //菜单栏 private MenuBar mb; //菜单项 private MenuItem closeMenu,mi2,mi3,openItem,saveItem; private FileDialog openDia,saveDia; private TextArea ta; File file = null;//文件对象 MenuDemo() { init(); } public void init() { f = new Frame("菜单练习"); //窗体设置 f.setBounds(200,100,600,600); //f.setLayout(new FlowLayout());//frame默认边界布局 mb = new MenuBar(); m = new Menu("文件"); m1 = new Menu("一级菜单"); m2 = new Menu("二级菜单"); closeMenu = new MenuItem("退出"); mi2 = new MenuItem("二级菜单项"); mi3 = new MenuItem("三级退出"); openItem = new MenuItem("打开"); saveItem = new MenuItem("保存"); saveItem.setShortcut(new MenuShortcut(KeyEvent.VK_S));//添加快捷命令 //打开 保存 对话框 openDia = new FileDialog(f,"打开",FileDialog.LOAD); saveDia = new FileDialog(f,"保存",FileDialog.SAVE); //文本框 ta = new TextArea(); //将菜单相关组件 添加到窗体 f.setMenuBar(mb);//窗体添加菜单栏setMenuBar() mb.add(m);//MenuBar菜单栏中只能添加Menu不可以添加Menu的父类MenuItem m.add(openItem); m.add(saveItem); //m.addSeparator();//添加分割线 m.add(m1); m1.add(m2); m1.add(mi2); //m2.add(closeMenu); m2.add(mi3); m.add(closeMenu); f.add(ta); /* 代码添加顺序就是图形的顺序 一个菜单项只有一个图形显示 当第二次添加同一个菜单项的时候 之前添加此菜单项的语句被覆盖 或者说 失效 */ myEvent(); f.setVisible(true); } public void myEvent() { //为窗体添加 监听器 f.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e) { System.exit(0); } }); //为菜单项 添加监听器 closeMenu.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { System.exit(0); } }); mi3.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { System.exit(0); } }); openItem.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { openDia.setVisible(true); //打开文本文件 显示内容在文本框 String dirPath = openDia.getDirectory(); String fileName = openDia.getFile(); System.out.println(dirPath+"...."+fileName); file = new File(dirPath,fileName); if(dirPath==null||fileName==null) return; ta.setText(""); BufferedReader bfr = null;//局部变量必须赋初始值 try { bfr = new BufferedReader(new FileReader(file)); String line = null; while ((line = bfr.readLine())!=null) { //System.out.println(line); ta.append(line+"\r\n");//不要忘记添加换行符号 } } catch (IOException io) { throw new RuntimeException("读取失败!"); } finally { try { if(bfr!=null) bfr.close(); } catch (IOException ec) { throw new RuntimeException("guan失败!"); } } } }); //为保存按钮添加监听 通过监听事件 执行动作:保存文本 到文件 saveItem.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { if(file==null) { saveDia.setVisible(true); String dirPath = saveDia.getDirectory(); String fileName = saveDia.getFile(); file = new File(dirPath,fileName); } BufferedWriter bfw = null; try { bfw = new BufferedWriter(new FileWriter(file)); String text = ta.getText();//返回文本组件内的文本 bfw.write(text); bfw.flush(); } catch (IOException ec) { throw new RuntimeException(); } finally { try { if(bfw!=null) bfw.close(); } catch (IOException ec) { throw new RuntimeException("guan失败!"); } } } }); } public static void main(String[] args) { new MenuDemo(); } }
时间: 2024-10-13 11:35:36