这个笔记本小项目主要是做一个综合练习,主要用到的知识点有:io编程、swing组件和java中的事件处理。
实例
1 /** 2 * 作者:白客C 3 * 时间:2020年3月15日 4 * 功能:记事本 5 */ 6 package com.beekc.www; 7 import java.io.*; 8 import java.awt.*; 9 import java.awt.event.*; 10 import javax.swing.*; 11 12 //继承JFrame 13 public class NotePad extends JFrame implements ActionListener{ 14 15 //定义组件 16 JTextArea jTextArea = null; 17 //菜单条 18 JMenuBar jMenuBar = null; 19 //一级菜单 20 JMenu jMenu1 = null; 21 //二级菜单 22 JMenuItem jMenuItem1 = null; 23 JMenuItem jMenuItem2 = null; 24 JScrollPane jScrollPane = null; 25 26 public static void main(String[] args) { 27 NotePad notePad = new NotePad(); 28 } 29 30 //构造函数 31 public NotePad() 32 { 33 //创建组件 34 jTextArea = new JTextArea(); 35 jScrollPane = new JScrollPane(jTextArea); 36 jMenuBar = new JMenuBar(); 37 jMenu1 = new JMenu(" 文件 "); 38 //设置助记符 39 jMenu1.setMnemonic('F'); 40 jMenuItem1 = new JMenuItem(" 打开 ",new ImageIcon("nuw.gif")); 41 jMenuItem2 = new JMenuItem(" 保存 "); 42 43 //添加到布局管理器 44 //添加组件 45 this.add(jScrollPane); 46 //菜单条 47 this.setJMenuBar(jMenuBar); 48 //菜单条(一) 49 jMenuBar.add(jMenu1); 50 jMenu1.add(jMenuItem1); 51 jMenu1.add(jMenuItem2); 52 53 //监听 54 jMenuItem1.addActionListener(this); 55 jMenuItem1.setActionCommand("open"); 56 jMenuItem2.addActionListener(this); 57 jMenuItem2.setActionCommand("save"); 58 59 //窗体设置 60 this.setTitle("NotePad"); 61 this.setSize(750,450); 62 this.setLocation(250,110); 63 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 64 65 //显示 66 this.setVisible(true); 67 } 68 69 //菜单事件 70 @Override 71 public void actionPerformed(ActionEvent actionEvent) { 72 //判断选中那个菜单 73 if(actionEvent.getActionCommand().equals("open")) { 74 System.out.println("open file"); 75 76 //文件选择组件 77 JFileChooser jFileChooser = new JFileChooser(); 78 jFileChooser.setDialogTitle("请选择文件..."); 79 //选择showOpenDialog窗体 80 jFileChooser.showOpenDialog(null); 81 jFileChooser.setVisible(true); 82 83 //得到用户选择的文件全路径 84 String filename = jFileChooser.getSelectedFile().getAbsolutePath(); 85 System.out.print("选择的路径" + filename); 86 87 FileReader fileReader =null; 88 BufferedReader bufferedReader = null; 89 90 try{ 91 fileReader = new FileReader(filename); 92 bufferedReader = new BufferedReader(fileReader); 93 94 //循环读取文本 95 String s = ""; 96 String allCon = ""; 97 while ((s = bufferedReader.readLine()) != null) 98 { 99 allCon += s + "\r\n"; 100 } 101 //System.out.print(allCon); 102 //将文本放到多行文本框 103 jTextArea.setText(allCon); 104 105 }catch(Exception e){ 106 e.printStackTrace(); 107 }finally{ 108 //关闭资源 109 try{ 110 fileReader.close(); 111 bufferedReader.close(); 112 }catch(Exception e){ 113 e.printStackTrace(); 114 } 115 } 116 117 }else if (actionEvent.getActionCommand().equals("save")){ 118 System.out.println("save file"); 119 120 //文件选择组件 121 JFileChooser jFileChooser = new JFileChooser(); 122 jFileChooser.setDialogTitle("保存为..."); 123 124 //选择showSaveDialog 125 jFileChooser.showSaveDialog(null); 126 jFileChooser.setVisible(true); 127 128 //得到用户希望把文件保存何处 129 String file = jFileChooser.getSelectedFile().getAbsolutePath(); 130 131 //写入到指定得文件 132 FileWriter fileWriter = null; 133 BufferedWriter bufferedWriter = null; 134 try{ 135 fileWriter = new FileWriter(file); 136 bufferedWriter = new BufferedWriter(fileWriter); 137 bufferedWriter.write(this.jTextArea.getText()); 138 }catch(Exception e){ 139 e.printStackTrace(); 140 }finally { 141 try{ 142 bufferedWriter.close(); 143 fileWriter.close(); 144 145 }catch (Exception e){ 146 e.printStackTrace(); 147 } 148 } 149 } 150 } 151 }
运行结果