package tarena; //老师代码 import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.TextEvent; import java.awt.event.TextListener; import java.awt.*; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import javax.swing.*; public class Notepad implements ActionListener { private JTextArea jta = new JTextArea(20, 40); private JFrame jf = new JFrame("NotePad"); private String copy = ""; private JDialog jd = new JDialog(jf, "查找"); private JTextField jtf = new JTextField(20); private String resu = ""; private String tempResu = ""; private int p = 0; private String file = ""; public Notepad() { JMenuBar jmb = new JMenuBar(); JMenu jm1 = new JMenu("文件"); JMenu jm2 = new JMenu("编辑"); JMenu jm3 = new JMenu("帮助"); String[] label = { "新建", "打开", "保存", "另存为", "退出", "撤销", "剪切", "复制", "粘贴", "删除", "查找", "替换", "全选", "关于记事本" }; JMenuItem[] jmi = new JMenuItem[label.length]; for (int i = 0; i < jmi.length; i++) { jmi[i] = new JMenuItem(label[i]); jmi[i].addActionListener(this); if (i < 5) { jm1.add(jmi[i]); } else if (i < 13) { jm2.add(jmi[i]); } else { jm3.add(jmi[i]); } } jm1.insertSeparator(2); jm2.insertSeparator(1); jm2.insertSeparator(8); jmb.add(jm1); jmb.add(jm2); jmb.add(jm3); JPanel jp = new JPanel(); jp.add(jtf); JButton jb1 = new JButton("查询"); jb1.addActionListener(this); jp.add(jb1); jd.add(jp); jd.pack(); jf.setJMenuBar(jmb); jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jf.add(new JScrollPane(jta)); jf.pack(); jf.setVisible(true); jf.validate(); } public void actionPerformed(ActionEvent e) { String comm = e.getActionCommand(); if (comm.equals("新建")) { jta.setText(""); } else if (comm.equals("打开")) { FileDialog fd = new FileDialog(jf, "请选择要打开的文件", FileDialog.LOAD); fd.setVisible(true); if (fd.getFile() != null) { file = fd.getDirectory() + fd.getFile(); try { FileInputStream fis = new FileInputStream(file); byte[] b = new byte[1024]; int count = 0; String resu = ""; while ((count = fis.read(b)) != -1) { resu = resu + new String(b, 0, count); } fis.close(); System.out.println(resu); jta.setText(resu); } catch (Exception e1) { e1.printStackTrace(); } } } else if (comm.equals("保存")) { String tempFile = "c://t.txt"; if (!file.equals("")) { tempFile = file; } String temp = jta.getText(); try { FileOutputStream fos = new FileOutputStream(tempFile); fos.write(temp.getBytes()); fos.close(); } catch (Exception e1) { e1.printStackTrace(); } } else if (comm.equals("另存为")) { FileDialog fd = new FileDialog(jf, "请选择要打开的文件", FileDialog.SAVE); fd.setVisible(true); if (fd.getFile() != null) { file = fd.getDirectory() + fd.getFile(); String temp = jta.getText(); try { FileOutputStream fos = new FileOutputStream(file); fos.write(temp.getBytes()); fos.close(); } catch (Exception e1) { e1.printStackTrace(); } } } else if (comm.equals("退出")) { System.exit(0); } else if (comm.equals("复制")) { jta.copy(); } else if (comm.equals("粘贴")) { copy = jta.getText();// 为了撤销用 jta.paste(); } else if (comm.equals("剪切")) { copy = jta.getText(); jta.cut(); } else if (comm.equals("全选")) { jta.selectAll(); } else if (comm.equals("撤销")) { jta.setText(copy); } else if (comm.equals("查找")) { jd.setVisible(true); resu = jta.getText(); tempResu = resu; } else if (comm.equals("查询")) { // jd.setVisible(false); String temp = jtf.getText(); // tempResu为子字符串,resu是全部 int begin = tempResu.indexOf(temp); // System.out.println(begin); if (begin != -1) { jta.select(p + begin, p + begin + temp.length()); p = p + begin + temp.length(); tempResu = resu.substring(p); System.out.println(p); } else { // 重新开始查找 tempResu = jta.getText(); p = 0; } System.out.println(resu); } } public static void main(String[] args) { new Notepad(); System.out.println("main"); } }