后来在第一次的开发的基础上,又进行了为期一周的第二次的发展,让我的程序基本算是完成了
因为涉及到文件位置还有以下标签,这些并不是很熟悉所以就从网上看了很多的例子,然后自己先学习了一下,然后在进行我这个程序的进一步的加工
代码如下:
public NotePadTest() { setTitle("记事本"); setSize(500, 460); setLocationRelativeTo(null); pane.setLayout(new BorderLayout()); // 设置快捷键 jme1.setMnemonic('N'); jme1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, KeyEvent.CTRL_MASK)); jme2.setMnemonic('O'); jme2.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, KeyEvent.CTRL_MASK)); jme3.setMnemonic('S'); jme3.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, KeyEvent.CTRL_MASK)); jme6.setMnemonic('A'); jme6.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A, KeyEvent.CTRL_MASK)); jme7.setMnemonic('X'); jme7.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X, KeyEvent.CTRL_MASK)); jme8.setMnemonic('C'); jme8.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, KeyEvent.CTRL_MASK)); jme9.setMnemonic('V'); jme9.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V, KeyEvent.CTRL_MASK)); jme10.setMnemonic('L'); jme10.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_L, KeyEvent.CTRL_MASK)); // 添加菜单项到子菜单(文件) jm1.add(jme1); jm1.addSeparator(); jm1.add(jme2); jm1.addSeparator(); jm1.add(jme3); jm1.addSeparator(); jm1.add(jme4); jm1.addSeparator(); jm1.add(jme5); jmb.add(jm1); // 添加菜单项到子菜单(编辑) jm2.add(jme6); jm2.addSeparator(); jm2.add(jme7); jm2.addSeparator(); jm2.add(jme8); jm2.addSeparator(); jm2.add(jme9); jm2.addSeparator(); jm2.add(jme10); jmb.add(jm2); // 添加菜单项到子菜单(格式) // 设置快捷键 jme11.setMnemonic('w'); jme11.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_W, KeyEvent.CTRL_MASK)); jm3.add(jme11); jmb.add(jm3); // 添加菜单项到子菜单(帮助) jm5.add(jme14); jm5.addSeparator(); jm5.add(jme15); jmb.add(jm5); // 将菜单栏添加到窗体顶部 setJMenuBar(jmb); // container.add(jmb,BorderLayout.NORTH); // 添加文本域 pane.add(jscroll, BorderLayout.CENTER); add(pane); // **************************添加事件监听器(全选部分)******************************* jme6.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { jtext.selectAll();// 全选 } }); // **************************添加事件监听器(剪切部分)******************************* jme7.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { jtext.cut();// 剪切 } }); // **************************添加事件监听器(复制部分)******************************* jme8.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { jtext.copy();// 复制 } }); // **************************添加事件监听器(粘贴部分)******************************* jme9.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { jtext.paste();// 粘贴 } }); // **************************添加事件监听器(删除部分)******************************* jme10.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { jtext.replaceSelection(null);// 删除 } }); // **************************添加事件监听器(新建部分)******************************** jme1.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { if (jtext.getText().equals("")) { jtext.setText(""); } else { int result = JOptionPane.showConfirmDialog(NotePadTest.this, "是否将更改保存到无标题?", "记事本", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE); if (result == 0) { save(); } } } }); // **************************添加事件监听器(打开部分)******************************** jme2.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { JFileChooser choose = new JFileChooser(); choose.setDialogTitle("打开"); File file; int result = choose.showOpenDialog(NotePadTest.this); if (result == JFileChooser.APPROVE_OPTION) { try { // 获取当前选择的文件 // 创建文件输出流 file = choose.getSelectedFile(); BufferedReader br = new BufferedReader(new FileReader(file)); String str = null; while ((str = br.readLine()) != null) { jtext.append(str + " "); } // 设置记事本标题 setTitle(file.getName() + " 记事本"); br.close(); } catch (Exception ee) { ee.printStackTrace(); } } } }); // **************************添加事件监听器(保存部分)******************************** jme3.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { if (jtext.getText() != null && !jtext.getText().equals("")) { save(); } } }); // **************************添加事件监听器(另存为部分)******************************** jme4.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { if (jtext.getText() != null && !jtext.getText().equals("")) { save(); } } }); // **************************添加事件监听器(退出部分)******************************** jme5.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { if (jtext.getText().equals("")) { NotePadTest.this.dispose(); } else { int result = JOptionPane.showConfirmDialog(NotePadTest.this, "是否将更改保存到无标题?", "记事本", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE); if (result == 0) { if (jtext.getText() != null && !jtext.getText().equals("")) { save(); } } else if (result == 1) { NotePadTest.this.dispose(); } } } }); // **************************添加事件监听器(自动换行部分)******************************** jme11.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { if (jme11.isSelected()) { jtext.setLineWrap(true); } else { jtext.setLineWrap(false); } } }); // **************************添加事件监听器(查看帮助部分)*********************************** jme14.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { JOptionPane.showMessageDialog(NotePadTest.this, "输入文字即可!"); } }); // **************************添加事件监听器(关于记事本部分)*********************************** jme15.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { JOptionPane.showMessageDialog(NotePadTest.this, "版本:Windows旗舰版"); } }); // 设置窗体关闭 if (jtext.getText().equals("")) { setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); } else if (jtext.getText() != null) { int result = JOptionPane.showConfirmDialog(NotePadTest.this, "是否将更改保存到无标题?", "记事本", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE); if (result == 0) { } else if (result == 1) { setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); } } // 设置窗体是否可见 setVisible(true); } public void save() { JFileChooser choose = new JFileChooser(); int result = choose.showSaveDialog(NotePadTest.this);// NotePad.this父容器 if (result == JFileChooser.APPROVE_OPTION) { File file; try { file = choose.getSelectedFile(); BufferedWriter bw = new BufferedWriter(new FileWriter(file)); bw.write(jtext.getText()); bw.close(); } catch (IOException e1) { e1.printStackTrace(); } } } public static void main(String[] args) { new NotePadTest(); } }
程序的基本框架截图: