功能较多的记事本

java功能:全选,删除,复制,粘贴,查找,替换,全替换,撤消,重做,设置字体颜色..

import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.event.UndoableEditEvent;
import javax.swing.event.UndoableEditListener;
import javax.swing.undo.CannotRedoException;
import javax.swing.undo.CannotUndoException;
import javax.swing.undo.UndoManager;

public class TestArea implements ActionListener {
        private JTextArea jta = new JTextArea(10, 10);

        private UndoManager udo = new UndoManager();

        private JOptionPane jop = new JOptionPane();

        private JFrame sf = new JFrame("设置");

        private JFrame ff = new JFrame("查找");

        private JTextField tf = new JTextField(15);

        private JTextField tf2 = new JTextField(15);

        // private String copystring ;
        public TestArea() {
                // udo.addEdit(jta) ;

                jta.getDocument().addUndoableEditListener(new UndoableEditListener() {
                        public void undoableEditHappened(UndoableEditEvent e) {
                                udo.addEdit(e.getEdit());
                        }

                });
                JFrame jf = new JFrame("记事本");
                String[] jmtext = { "文件(F)", "编辑(E)", "其他(O)" };
                String[][] jmitext = {
                                { "新建(N)", "保存(S)", "打开(O)", "退出(X)" },
                                { "全选(A)", "复制(C)", "剪切(X)", "粘贴(P)", "删除(D)", "查找(F)",
                                                "撤消(U)", "重做(R)" }, { "设置(S)", "关于(A)" } };
                JMenuBar jmb = new JMenuBar();
                JMenu jm[] = new JMenu[jmtext.length];
                for (int i = 0; i < jmtext.length; i++) {
                        jm[i] = new JMenu(jmtext[i]);
                        JMenuItem[] jms = new JMenuItem[jmitext[i].length];
                        String s1 = jm[i].getText();
                        if (s1.indexOf('(') != -1) {
                                char k1 = s1.charAt(s1.indexOf("(") + 1);
                                jm[i].setMnemonic(k1);
                        }
                        for (int j = 0; j < jmitext[i].length; j++) {
                                jms[j] = new JMenuItem(jmitext[i][j]);
                                jm[i].add(jms[j]);
                                jms[j].addActionListener(this);
                                String s2 = jms[j].getText();
                                if (s2.indexOf('(') != -1) {
                                        char k2 = s2.charAt(s2.indexOf("(") + 1);
                                        jms[j].setMnemonic(k2);
                                }
                        }
                        jmb.add(jm[i]);
                }

                JLabel jl = new JLabel("颜色");
                ButtonGroup group = new ButtonGroup();
                final JRadioButton rb1 = new JRadioButton("黑", true);
                JRadioButton rb2 = new JRadioButton("蓝");
                JButton jb1 = new JButton("确定");
                jb1.addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent e) {
                                if (rb1.isSelected())
                                        jta.setForeground(Color.BLACK);
                                else
                                        jta.setForeground(Color.BLUE);
                                sf.setVisible(false);
                        }
                });
                group.add(rb1);
                group.add(rb2);
                sf.setLayout(new FlowLayout());
                sf.add(jl);
                sf.add(rb1);
                sf.add(rb2);
                sf.add(jb1);

                ff.setSize(200, 150);
                ff.setLocation(200, 200);

                JButton jb3 = new JButton("查找");
                JButton jb4 = new JButton("下一个");
                JButton jb5 = new JButton("替换");
                JButton jb6 = new JButton("全替换");
                // tf.setSize(200,50) ;

                jb3.addActionListener(al);
                jb4.addActionListener(al);
                jb5.addActionListener(al);
                jb6.addActionListener(al);
                ff.setLayout(new FlowLayout());
                ff.add(tf);
                ff.add(jb3);
                ff.add(jb4);
                ff.add(tf2);
                ff.add(jb5);
                ff.add(jb6);
                jm[0].insertSeparator(3);
                jm[1].insertSeparator(1);
                jm[1].insertSeparator(4);
                jm[1].insertSeparator(8);
                sf.setLocation(200, 100);
                sf.setSize(200, 200);
                jf.setJMenuBar(jmb);
                jta.setDragEnabled(true);
                jf.add(new JScrollPane(jta));
                jf.setLocation(200, 100);
                jf.setSize(240, 300);
                jf.setVisible(true);
                jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        }

        private ActionListener al = new ActionListener() {

                public void actionPerformed(ActionEvent e) {
                        if (!"".equals(tf.getText())) {
                                String s = jta.getText();
                                int a = -1;
                                if ("查找".equals(e.getActionCommand())) {
                                        a = s.indexOf(tf.getText());
                                } else if ("下一个".equals(e.getActionCommand())) {
                                        a = s.indexOf(tf.getText(), jta.getSelectionEnd());
                                } else if ("替换".equals(e.getActionCommand())) {
                                        jta.replaceSelection(tf2.getText());
                                } else if ("全替换".equals(e.getActionCommand())) {
                                        jta.setText(jta.getText().replaceAll(tf.getText(),
                                                        tf2.getText()));
                                }
                                if (a != -1) {
                                        jta.requestFocus();
                                        jta.select(a, a + tf.getText().length());
                                }
                        }
                }

        };

        public static void main(String[] args) {
                new TestArea();
        }

        public void actionPerformed(ActionEvent e) {
                String s = e.getActionCommand().split("[(]")[0];
                if ("退出".equals(s)) {
                        System.exit(1);
                } else if ("全选".equals(s)) {
                        jta.selectAll();
                } else if ("复制".equals(s)) {
                        jta.copy();
                } else if ("粘贴".equals(s)) {
                        jta.paste();
                } else if ("剪切".equals(s)) {
                        jta.cut();
                } else if ("删除".equals(s)) {
                        jta.replaceRange(null, jta.getSelectionStart(), jta
                                        .getSelectionEnd());
                } else if ("撤消".equals(s)) {
                        try {
                                // if (udo.canUndo())
                                udo.undo();
                        } catch (CannotUndoException ee) {
                                JOptionPane.showMessageDialog(jop, "无法撤消 !");
                        }
                } else if ("重做".equals(s)) {
                        try {
                                // if (udo.canRedo())
                                udo.redo();
                        } catch (CannotRedoException ee) {
                                JOptionPane.showMessageDialog(jop, "无法重做 !");
                        }
                } else if ("查找".equals(s)) {
                        ff.setVisible(true);
                } else if ("设置".equals(s)) {
                        sf.setVisible(true);
                } else if ("关于".equals(s)) {
                        JOptionPane.showMessageDialog(jop, "记事本 V1.0 Kdash版");
                }
        }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值