import java.awt.FileDialog; import java.awt.Menu; import java.awt.MenuBar; import java.awt.MenuItem; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTextArea; public class Notepad extends JFrame { // 定义组件 MenuBar menubar; // 菜单栏 Menu menu; // 菜单 JTextArea edit_Area; MenuItem open_menuItem, save_menuItem, exit_menuItem; // 子菜单 FileDialog open_fileDialog, save_fileDialog; // 弹出的保存打开框 JScrollPane jspane; // 让文本域可以滚动的组件 File file; public Notepad() { init(); event(); } // 设置监听 private void event() { open_menuItem.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { openfile(); } }); save_menuItem.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { savefile(); } }); exit_menuItem.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { System.exit(0); } }); } // 打开文件方法 private void openfile() { open_fileDialog.setVisible(true); // 设置其显示出来 // 获取路径和文件名 String dirPath = open_fileDialog.getDirectory(); String fileName = open_fileDialog.getFile(); // 防止点击取消报错 if (dirPath == null || fileName == null) return; edit_Area.setText(""); // 将文本区域清空 file = new File(dirPath, fileName); // 建立文件对象 // 按照行来读取数据,显示在文本区域 try { BufferedReader br = new BufferedReader(new FileReader(file)); String line = null; while ((line = br.readLine()) != null) { edit_Area.append(line + "\r\n"); } br.close(); } catch (IOException ex) { throw new RuntimeException("读取失败"); } } // 保存文件方法 private void savefile() { // 先判断文件是否存在 if (file == null) { save_fileDialog.setVisible(true); String dirPath = save_fileDialog.getDirectory(); String fileName = save_fileDialog.getFile(); // 防止点击取消报错 if (dirPath == null || fileName == null) return; // 因为文件不存在。所以需要建立file对象 file = new File(dirPath, fileName); } // 将数据写入文件 try { BufferedWriter bw = new BufferedWriter(new FileWriter(file)); String info = edit_Area.getText(); // 得到文本区域的信息 bw.write(info); // 写入操作 bw.flush(); bw.close(); } catch (IOException e1) { throw new RuntimeException(); } } // 初始化 private void init() { this.setTitle("记事本"); menubar = new MenuBar(); menu = new Menu("菜单"); open_menuItem = new MenuItem("打开"); save_menuItem = new MenuItem("保存"); exit_menuItem = new MenuItem("退出"); edit_Area = new JTextArea(); jspane = new JScrollPane(edit_Area); // 分别设置水平和垂直滚动条自动出现 jspane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); jspane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED); // //分别设置水平和垂直滚动条总是出现 // jspane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); // jspane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); // // //分别设置水平和垂直滚动条自动出现总是隐藏 // jspane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); // jspane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_NEVER); // 添加对应组件 this.add(jspane); menu.add(open_menuItem); menu.add(save_menuItem); menu.add(exit_menuItem); menubar.add(menu); // 设置窗体菜单栏 如果要添加其他菜单直接menbar.add()即可 this.setMenuBar(menubar); // 设置文件可打开跟保存窗口 open_fileDialog = new FileDialog(this, "打开", FileDialog.LOAD); save_fileDialog = new FileDialog(this, "保存", FileDialog.SAVE); this.setBounds(200, 300, 500, 400); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setLocationRelativeTo(null); // 设置显示在中央 this.setVisible(true); } public static void main(String[] args) { new Notepad(); } }
java小程序之简单记事本
猜你喜欢
转载自blog.csdn.net/qq_41262903/article/details/80625334
今日推荐
周排行