- import java.awt.FileDialog;
- import java.awt.FlowLayout;
- import java.awt.event.*;
- import java.io.*;
- import java.util.*;
- import javax.swing.*;
- public class Not implements ActionListener, MouseListener {
- private ArrayList<String> al = new ArrayList<String>();
- private int set = 0;
- private JFrame jf = new JFrame("Notepad");
- private JTextArea jta = new JTextArea(20,40);
- JScrollPane jsp = new JScrollPane(jta);
- private JTextField jtf = new JTextField(10);
- private JTextField jtft = new JTextField(10);
- private JPopupMenu pp = new JPopupMenu();
- private String target = null;
- private JDialog jd = new JDialog(jf, "警告");
- public void actionPerformed(ActionEvent e) {
- String comm = e.getActionCommand();
- if (comm.equals("新建...")) {
- if(!jta.getText().equals("")){
- jd.setLocation(300, 300);
- jd.setVisible(true);
- }else{
- jta.setText("1234548882");
- }
- }
- if(comm.equals("否")){
- jta.setText("");
- jd.dispose();
- }
- if(comm.equals("取消")){
- jd.dispose();
- }
- if (comm.equals("保存") || comm.equals("另存...")||comm.equals("是")) {
- if(comm.equals("是")) jd.dispose();
- FileDialog fd = new FileDialog(jf, "打开...", FileDialog.SAVE);
- fd.setFilenameFilter(new FilenameFilter() {
- public boolean accept(File dir, String name) {
- return name.endsWith(".txt") || name.endsWith(".java");
- }
- });
- if (target == null || "另存...".equals(comm)) {
- fd.setVisible(true);
- }
- if (fd.getFile() != null) {
- target = fd.getFile();
- try {
- FileOutputStream fos = new FileOutputStream(fd
- .getDirectory()
- + target);
- byte[] b = jta.getText().getBytes();
- for (byte by : b) {
- fos.write(by);
- }
- fos.close();
- } catch (IOException e1) {
- e1.printStackTrace();
- }
- }
- }
- if (comm.equals("打开...")) {
- al.add(jta.getText());
- FileDialog fd = new FileDialog(jf, "打开...", FileDialog.LOAD);
- fd.setFilenameFilter(new FilenameFilter() {
- public boolean accept(File dir, String name) {
- return name.endsWith(".txt") || name.endsWith(".java");
- }
- });
- fd.setVisible(true);
- // 以下是打开文件
- target = fd.getFile();
- String str = fd.getDirectory() + target;
- if (fd.getFile() != null) {
- try {
- String res = "";
- FileInputStream fis = new FileInputStream(str);
- byte[] b = new byte[1024];
- int count;
- while ((count = fis.read(b)) != -1) {
- res = res + new String(b, 0, count);
- }
- fis.close();
- jta.setText(res);
- } catch (IOException e1) {
- e1.printStackTrace();
- }
- }
- }
- if (comm.equals("退出")) {
- System.exit(0);
- }
- if (comm.equals("撤销")) {
- if(!al.isEmpty()){
- jta.setText(al.get(al.size()-1));
- al.remove(al.size()-1);
- }
- }
- if (comm.equals("剪切")) {
- al.add(jta.getText());
- jta.cut();
- }
- if (comm.equals("复制")) {
- al.add(jta.getText());
- jta.copy();
- }
- if (comm.equals("粘贴")) {
- al.add(jta.getText());
- jta.paste();
- }
- if (comm.equals("删除")) {
- al.add(jta.getText());
- jta.cut();
- }
- if ("查找...".equals(comm) || "替换...".equals(comm)) {
- JDialog jdct = new JDialog(jf,comm);
- String label = comm.substring(0, 2);
- JButton jb = new JButton(label);
- jb.addActionListener(this);
- jdct.setLayout(new FlowLayout());
- jdct.add(jtf);
- if ("替换...".equals(comm)) {
- JLabel jlt = new JLabel(">");
- jdct.add(jlt);
- jdct.add(jtft);
- }
- jdct.add(jb);
- if ("替换...".equals(comm)) {
- JButton jball = new JButton("替换全部");
- jball.addActionListener(this);
- jdct.add(jball);
- }
- jdct.pack();
- jdct.setResizable(false);
- jdct.setLocation(400, 240);
- jdct.setVisible(true);
- }
- if (comm.equals("全选")) {
- jta.selectAll();
- }
- if (comm.equals("关于...")) {
- JDialog jdgy = new JDialog(jf, "关于我...");
- jdgy.setLayout(new FlowLayout());
- JLabel jl = new JLabel("制作者: xxx ");
- JLabel j2 = new JLabel("Email:[email protected] ");
- jdgy.add(jl);
- jdgy.add(j2);
- jdgy.setSize(180, 100);
- jdgy.setResizable(false);
- jdgy.setLocation(400, 240);
- jdgy.setVisible(true);
- }
- //查找实现
- if (comm.equals("查找")) {
- String str = jtf.getText();
- String strall = jta.getText();
- int n = strall.indexOf(str, set);
- if (n != -1) {
- set = n + 1;
- jta.setSelectionStart(n);
- jta.setSelectionEnd(n + str.length());
- }
- }
- //替换实现
- if (comm.equals("替换") || comm.equals("替换全部")) {
- al.add(jta.getText());
- String str = jtf.getText();
- String strall = jta.getText();
- if (comm.equals("替换全部")) {
- int n1 = 0;
- while (true) {
- set = strall.indexOf(str, n1);
- if (set == -1)
- break;
- n1 = set + 1;
- jta.setSelectionStart(set);
- jta.setSelectionEnd(set + str.length());
- jta.replaceSelection(jtft.getText());
- }
- set = 0;
- }
- int n = strall.indexOf(str, set);
- if (n == -1) {
- set = 0;
- } else {
- set = n + 1;
- jta.setSelectionStart(n);
- jta.setSelectionEnd(n + str.length());
- jta.replaceSelection(jtft.getText());
- }
- }
- }
- public Notepad() {//构造器
- jta.setLineWrap(true);
- jta.addMouseListener(this);
- JMenuBar jmb = new JMenuBar();
- JMenu jm1 = new JMenu("文件");
- String[] label1 = { "新建...", "打开...", "保存", "另存...", "退出" };
- JMenuItem[] jmi1 = new JMenuItem[label1.length];
- for (int i = 0; i < jmi1.length; i++) {
- jmi1[i] = new JMenuItem(label1[i]);
- jm1.add(jmi1[i]);
- jmi1[i].addActionListener(this);
- }
- jm1.insertSeparator(1);
- jm1.insertSeparator(3);
- jm1.insertSeparator(6);
- JMenu jm2 = new JMenu("编辑");
- String[] label2 = { "撤销", "剪切", "复制", "粘贴", "删除", "查找...", "替换...",
- "全选" };
- JMenuItem[] jmi2 = new JMenuItem[label2.length];
- for (int i = 0; i < jmi2.length; i++) {
- jmi2[i] = new JMenuItem(label2[i]);
- jm2.add(jmi2[i]);
- jmi2[i].addActionListener(this);
- }
- jm2.insertSeparator(1);
- jm2.insertSeparator(5);
- jm2.insertSeparator(7);
- jm2.insertSeparator(10);
- JMenu jm3 = new JMenu("帮助");
- JMenuItem jmi3 = new JMenuItem("关于...");
- jm3.add(jmi3);
- jmi3.addActionListener(this);
- jmb.add(jm1);
- jmb.add(jm2);
- jmb.add(jm3);
- jf.setJMenuBar(jmb);
- jf.addWindowListener(new WindowAdapter() {
- public void windowClosing(WindowEvent e) {
- jf.removeAll();
- jf.dispose();
- }
- });
- //鼠标右健弹出菜单
- JMenuItem jmi11, jmi22, jmi33, jmi44;
- pp.add(jmi11 = new JMenuItem("剪切"));
- pp.add(jmi22 = new JMenuItem("复制"));
- pp.add(jmi33 = new JMenuItem("粘贴"));
- pp.addSeparator();
- pp.add(jmi44 = new JMenuItem("全选"));
- jmi11.addActionListener(this);
- jmi22.addActionListener(this);
- jmi33.addActionListener(this);
- jmi44.addActionListener(this);
- jf.add(pp);
- //
- //新建菜单
- jd.setLayout(new FlowLayout());
- JButton jb1 = new JButton("是");
- JButton jb2 = new JButton("否");
- JButton jb3 = new JButton("取消");
- jd.add(new JLabel("您当前编辑未保存,是否保存?"));
- jb1.addActionListener(this);
- jb2.addActionListener(this);
- jb3.addActionListener(this);
- jd.add(jb1);
- jd.add(jb2);
- jd.add(jb3);
- jd.pack();
- jf.add(jsp);
- jf.pack();
- jf.setLocation(300, 200);
- jf.setVisible(true);
- jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- }
- public static void main(String[] args) {
- new Notepad();
- }
- public void mouseClicked(MouseEvent e) {
- if (e.getButton() == 3) {
- pp.setVisible(true);
- pp.show(e.getComponent(), e.getX(), e.getY());
- }
- }
- public void mouseEntered(MouseEvent e) {
- }
- public void mouseExited(MouseEvent e) {
- }
- public void mousePressed(MouseEvent e) {
- }
- public void mouseReleased(MouseEvent e) {
- }
- }
来源: http://www.phpxs.com/code/1001738/