Java小程序设计--Note记事本

来源:互联网 发布:网络运营推广 编辑:程序博客网 时间:2024/05/17 06:00
import java.awt.*;import java.awt.event.*;import java.io.*;import javax.swing.*;import javax.swing.GroupLayout.Alignment;public class MyNotePad implements ActionListener {private JFrame frame = new JFrame("NewNote");private JTextArea jta = new JTextArea();private String result = "";/* File is a new file? */private boolean flag = true;private File f;/* Find or Replease Dialog */private JButton jb = new JButton("Start");private JTextField jtf = new JTextField(5);private JTextField jt = new JTextField(5);private JButton jbt = new JButton("Replace AS");private JButton jba = new JButton("Replace All");private String value;private int start = 0;private JFrame jf = new JFrame("Find");private JFrame jfc = new JFrame("Replace");@Overridepublic void actionPerformed(ActionEvent e) {String comm = e.getActionCommand();/* If file is new */if ("New".equals(comm)) {New();} else if ("Open".equals(comm)) {Open();} else if ("Save".equals(comm)) {Save();} else if ("Save As".equals(comm)) {Save_As();} else if ("Exit".equals(comm)) {ExitJudge();} else if ("Undo".equals(comm)) {jta.setText(value);} else if ("Cut".equals(comm)) {value = jta.getText();jta.cut();} else if ("Copy".equals(comm)) {jta.copy();} else if ("Paste".equals(comm)) {value = jta.getText();jta.paste();} else if ("Delete".equals(comm)) {value = jta.getText();jta.replaceSelection(null);} else if ("Select all".equals(comm)) {jta.selectAll();} else if ("Find".equals(comm)) {Find();} else if ("Replace".equals(comm)) {/* menuitem */Replace();} else if ("Version".equals(comm)) {Version();} else if ("Start".equals(comm) || "Next".equals(comm)) {StartNextButton();} else if ("Replace AS".equals(comm)) {/* buttron */ReplaceAs();} else if ("Replace All".equals(comm)) {/* buttron */String temp = jta.getText();temp = temp.replaceAll(jtf.getText(), jt.getText());jta.setText(temp);} else if ("Auto Wrap".equals(comm)) {if (!jta.getLineWrap())jta.setLineWrap(true);// 自动换行else {jta.setLineWrap(false);}}}/* ExitJudge */private void ExitJudge() {if (flag) {int returnVal = JOptionPane.showConfirmDialog(null,"Doesn't save this new file!!\r\nExit??");if (returnVal == JOptionPane.OK_OPTION)/* select the OK button */{Save();System.exit(0);} else if (returnVal == JOptionPane.NO_OPTION) {/* select the NO button */System.exit(0);} else {/* select the cancle button */frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);}}}/* Replace As */private void ReplaceAs() {String temp = jtf.getText();int s = value.indexOf(temp, start);if (value.indexOf(temp, start) != -1) {jta.setSelectionStart(s);jta.setSelectionEnd(s + temp.length());jta.setSelectedTextColor(Color.GREEN);start = s + 1;jta.replaceSelection(jt.getText());} else {JOptionPane.showMessageDialog(jf, "Find Over!", "Tips", 0);jf.dispose();}}/* StartNextButton */private void StartNextButton() {String temp = jtf.getText();jb.setText("Start");if (!temp.equals("")) {int s = value.indexOf(temp, start);if (value.indexOf(temp, start) != -1) {jta.setSelectionStart(s);jta.setSelectionEnd(s + temp.length());jta.setSelectedTextColor(Color.GREEN);start = s + 1;jb.setText("Next");// value=value.substring(s+temp.length());//不能截取字串} else {JOptionPane.showMessageDialog(jf, "Find Over!", "Tips", 0);/* reset the cursor to index 0 */jta.setCaretPosition(0);start = 0;jf.dispose();}} else {JOptionPane.showMessageDialog(null, "Text is null");jf.dispose();}}/* start the text_find from */private void Find() {value = jta.getText();if (!value.equals("")) {jf.add(jtf, BorderLayout.CENTER);jf.add(jb, BorderLayout.SOUTH);jf.setLocation(630, 300);jf.pack();jf.setVisible(true);jf.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);} else {JOptionPane.showMessageDialog(null, "Text is null!!");}}/* Version */private void Version() {JDialog jd = new JDialog(frame, "Version");/* tips */JLabel label = new JLabel("Designed By ZKJ!!!");/* tips' font */label.setFont(new Font("微软雅黑", Font.PLAIN, 25));/* text center */label.setHorizontalAlignment(JTextField.CENTER);jd.add(label, BorderLayout.CENTER);jd.setLocation(600, 350);jd.setSize(300, 100);jd.setVisible(true);// jd.pack();/* JDialog.DISPOSE_ON_CLOSE */jd.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);}/* start the text_replace from *//* label */JLabel jl1 = new JLabel("Content:");JLabel jl2 = new JLabel("Replace As:");JLabel jl3 = new JLabel();JLabel jl4 = new JLabel();private void Replace() {value = jta.getText();jfc.setLayout(new GridLayout(3, 3));/* add */jfc.add(jl1);jfc.add(jtf);jfc.add(jb);jfc.add(jl2);jfc.add(jt);jfc.add(jbt);jfc.add(jl3);jfc.add(jl4);jfc.add(jba);jfc.setLocation(570, 300);jfc.pack();jfc.setVisible(true);/* JDialog.DISPOSE_ON_CLOSE */jfc.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);}/* new */private void New() {/* If there exits a file */if (!(frame.getTitle().equals("NewNote"))) {/* If this file doesn't save */if (!flag) {write();newNew();} else {JFileChooser jfc = new JFileChooser("D:\\javaNote");int returnVal = jfc.showDialog(null, "Save As");if (returnVal == JFileChooser.APPROVE_OPTION) {f = jfc.getSelectedFile();flag = false;write();}}} else if (!(jta.getText().isEmpty())) {JFileChooser jfc = new JFileChooser("D:\\javaNote");int returnVal = jfc.showDialog(null, "Save");if (returnVal == JFileChooser.APPROVE_OPTION) {f = jfc.getSelectedFile();flag = false;write();newNew();}} else {newNew();}}/* open */private void Open() {JFileChooser jfc = new JFileChooser("D:\\javaNote");jfc.setDialogType(JFileChooser.OPEN_DIALOG);int returnVal = jfc.showOpenDialog(null);if (returnVal == JFileChooser.APPROVE_OPTION) {f = jfc.getSelectedFile();/* set frame title */frame.setTitle(f.getName());result = read();flag = false;value = result;jta.setText(result);}}/* save as */private void Save_As() {JFileChooser jfc = new JFileChooser("D:\\javaNote");int returnVal = jfc.showDialog(null, "Save As");if (returnVal == JFileChooser.APPROVE_OPTION) {f = jfc.getSelectedFile();write();}}/* save */private void Save() {JFileChooser jfc = new JFileChooser("D:\\javaNote");if (flag) {int returnVal = jfc.showDialog(null, "Save");if (returnVal == JFileChooser.APPROVE_OPTION) {f = jfc.getSelectedFile();flag = false;write();}} else {write();}}/* read text to programme */public String read() {String temp = "";try {FileInputStream fis = new FileInputStream(f.getAbsolutePath());byte[] b = new byte[1024];int num = fis.read(b);while (num != -1) {temp = temp + new String(b, 0, num);num = fis.read(b);}fis.close();} catch (Exception e1) {e1.printStackTrace();}return temp;}/* write text to file */public void write() {try {FileOutputStream fos = new FileOutputStream(f);fos.write(jta.getText().getBytes());fos.close();} catch (Exception e) {e.printStackTrace();}}/* new file */public void newNew() {/* release the old frame */frame.dispose();/* new another frame */new MyNotePad();/* set flag=true */flag = true;}/* constructor */public MyNotePad() {init();}/* init the frame */private void init() {JMenuBar jmb = addMenuToFrame();frame.setJMenuBar(jmb);// jta.setLineWrap(true);// 自动换行JScrollPane jsp = new JScrollPane(jta);// 滚动窗口面板frame.add(jsp);jb.addActionListener(this);jbt.addActionListener(this);jba.addActionListener(this);//try {//UIManager//.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");//} catch (Exception e) {////e.printStackTrace();//}try {UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");} catch (Exception e1) {e1.printStackTrace();}/* Key Event */addKeyEvent();/* Window Event */AddWinCloseEvent();frame.setLocation(550, 200);frame.setSize(400, 400);frame.setVisible(true);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}/* Window Event */private void AddWinCloseEvent() {frame.addWindowListener(new WindowAdapter() {@Overridepublic void windowClosing(WindowEvent e) {ExitJudge();}});}/* Add KeyEvent */private void addKeyEvent() {/* adapter */jta.addKeyListener(new KeyAdapter() {@Overridepublic void keyPressed(KeyEvent e) {int key = e.getKeyCode();switch (key) {case KeyEvent.VK_CONTROL | KeyEvent.VK_C:/* Ctrl+C */jta.copy();break;case KeyEvent.VK_CONTROL | KeyEvent.VK_V:/* Ctrl+V */jta.paste();break;case KeyEvent.VK_CONTROL | KeyEvent.VK_A:/* Ctrl+A */jta.selectAll();break;case KeyEvent.VK_DELETE: /* Delete */value = jta.getText();jta.replaceSelection(null);break;}/* Ctrl+ _ */if (e.isControlDown() && e.getKeyCode() == KeyEvent.VK_N)newNew();else if (e.isControlDown() && e.getKeyCode() == KeyEvent.VK_S) {Save();} else if (e.isControlDown() && e.getKeyCode() == KeyEvent.VK_O) {Open();} else if (e.isControlDown() && e.getKeyCode() == KeyEvent.VK_F) {Find();} else if (e.isControlDown() && e.getKeyCode() == KeyEvent.VK_H) {Replace();} else if (e.isControlDown() && e.getKeyCode() == KeyEvent.VK_Z) {jta.setText(value);}}});}/* add menubar to frame */private JMenuBar addMenuToFrame() {JMenuBar jmb = new JMenuBar();String[] menuLab = { "File", "Edit", "Font", "Help" };String[][] menuItemLab = {{ "New", "Open", "Save", "Save As", "Exit" },{ "Undo", "Cut", "Copy", "Paste", "Delete", "Select all","Find", "Replace" }, { "Auto Wrap" }, { "Version" } };/* add */for (int i = 0; i < menuLab.length; i++) {JMenu menu = new JMenu(menuLab[i]);jmb.add(menu);for (int j = 0; j < menuItemLab[i].length; j++) {JMenuItem jmi = new JMenuItem(menuItemLab[i][j]);menu.add(jmi);jmi.addActionListener(this);}}return jmb;}/* test */public static void main(String[] args) {new MyNotePad();}}

 

/*这个记事本的主要难点就在于读写文件,以及各种逻辑的控制,是否保存为保存的,是否退出....等等总之还是比较有意思而且有综合运用File,swing等知识*/下面是运行的几个截图/*见谅一下,注释用了一手不标准的Eng*/

原创粉丝点击