在JDK下DEMO下有记事本的试例文件,建议你去看一下!

解决方案 »

  1.   

    import java.lang.*;
    import java.awt.*;
    import java.io.*;
    import java.awt.event.*;
    import java.awt.datatransfer.*;public class EditorFrame extends Frame implements ActionListener
    {
    TextArea textArea = new TextArea();
    MenuBar menubar = new MenuBar();

    Menu filemenu = new Menu("文件");
    MenuItem newItem = new MenuItem("新建");
    MenuItem openItem = new MenuItem("打开");
    MenuItem saveItem = new MenuItem("保存");
    MenuItem saveasItem = new MenuItem("另存为");
    MenuItem exitItem = new MenuItem("退出");

    Menu editmenu = new Menu("编辑");
    MenuItem selectItem = new MenuItem("全选");
    MenuItem copyItem = new MenuItem("复制");
    MenuItem cutItem = new MenuItem("剪切");
    MenuItem pasteItem = new MenuItem("粘贴");

    Menu helpmenu = new Menu("帮助");
    MenuItem aboutItem = new MenuItem("关于记事本");

    String fileName = "NoName";
    Toolkit toolKit = Toolkit.getDefaultToolkit();
    Clipboard clipBoard = toolKit.getSystemClipboard();

    private FileDialog openFileDialog 
         = new FileDialog(this,"Open File",FileDialog.LOAD);
    private FileDialog saveasFileDialog
         = new FileDialog(this,"Save File As",FileDialog.SAVE);
         
    public EditorFrame()
    {
    setTitle("记事本");
    setFont(new Font("Times New Roman",Font.PLAIN,12));
    setBackground(Color.white);
    setSize(300,200);

    filemenu.add(newItem);
    filemenu.add(openItem);
    filemenu.addSeparator();
    filemenu.add(saveItem);
    filemenu.add(saveasItem);
    filemenu.addSeparator();
    filemenu.add(exitItem);
    editmenu.add(selectItem);
    editmenu.addSeparator();
    editmenu.add(copyItem);
    editmenu.add(cutItem);
    editmenu.add(pasteItem);
    helpmenu.add(aboutItem);

    menubar.add(filemenu);
    menubar.add(editmenu);
    menubar.add(helpmenu);

    setMenuBar(menubar);
    add(textArea);
    addWindowListener(new WindowAdapter()
    {
    public void windowClosing(WindowEvent e)
    {
    System.exit(0);
    }
    });

    newItem.addActionListener(this);
    openItem.addActionListener(this);
    saveItem.addActionListener(this);
    saveasItem.addActionListener(this);
    exitItem.addActionListener(this);
    selectItem.addActionListener(this);
    copyItem.addActionListener(this);
    cutItem.addActionListener(this);
    pasteItem.addActionListener(this);
    }
    public void actionPerformed(ActionEvent e)
    {
    Object eventSource = e.getSource();
    if(eventSource == newItem)
    {
    textArea.setText("");
    }
    else if(eventSource == openItem)
    {
    openFileDialog.setVisible(true);
    fileName = openFileDialog.getDirectory() + openFileDialog.getFile();
    if(fileName != null)
    {
    readFile(fileName);
    }
    }
    else if(eventSource == saveasItem)
    {
    saveasFileDialog.setVisible(true);
    fileName = saveasFileDialog.getDirectory() + saveasFileDialog.getFile();

    if(fileName != null)
    {
    writeFile(fileName);
    }
    }
    else if(eventSource == selectItem)
    {
    textArea.selectAll();
    }
    else if(eventSource == copyItem)
    {
    String text = textArea.getSelectedText();
    StringSelection selection = new StringSelection(text);
    clipBoard.setContents(selection,null);
    }
    else if(eventSource == cutItem)
    {
    String text = textArea.getSelectedText();
    StringSelection selection = new StringSelection(text);
    clipBoard.setContents(selection,null);
    textArea.replaceRange("",textArea.getSelectionStart(),textArea.getSelectionEnd());

    }
    else if(eventSource == pasteItem)
    {
    Transferable contents = clipBoard.getContents(this);
    if(contents == null)
    {
    return;
    }
    String text;
    text = "";
    try 
    {
    text = (String)contents.getTransferData(DataFlavor.stringFlavor);
    }
    catch(Exception exception)
    {

    }
    textArea.replaceRange(text,textArea.getSelectionStart(),textArea.getSelectionEnd());

    }
    else if(eventSource == exitItem)
    {
    System.exit(0);
    }
    }
    public void readFile(String fileName)
    {
    try
    {
    File file = new File(fileName);
    FileReader readIn = new FileReader(file);
    int size = (int)file.length();
    int charsRead = 0;
    char[] content = new char[size];
    while(readIn.ready())
    {
    charsRead += readIn.read(content,charsRead,size-charsRead);
    }
    readIn.close();
    textArea.setText(new String(content,0,charsRead));
    }
    catch(IOException e)
    {
    System.out.println("Error Opening file");
    }
    }
    public void writeFile(String fileName)
    {
    try
    {
    File file = new File(fileName);
    FileWriter writeOut = new FileWriter(file);
    writeOut.write(textArea.getText());
    writeOut.close();
    }
    catch(IOException e)
    {
    System.out.println("Error writing file");
    }
    }
    public static void main(String[] args)
    {
    Frame frame = new EditorFrame();
    frame.setVisible(true);
    }
    }
      

  2.   

    drinkant(喝酒的蚂蚁) 不是说过了吗?你不明白么?
    比如: 前面定义JMenu是用的"Open...",后面比较id时为什么成了"open..."?下面的代码只改了大小写,通过了。不过还是要尽量使用常量。
    比如:final String OPEN_MENU = "Open..."; 以后凡是用到这个串的地方都用OPEN_MENU来代替
    import java.awt.*;
    import java.awt.event.*;import java.io.*;import javax.swing.*;
    class newtest extends JFrame implements ActionListener {
        File file = null;
        Color color = Color.black;
        JTextPane text = new JTextPane();
        JFileChooser filechooser = new JFileChooser();
        JColorChooser jcolorchooser = new JColorChooser();
        JDialog about = new JDialog(this);
        JMenuBar menubar = new JMenuBar();
        JMenu[] menus = new JMenu[] { new JMenu("File"), new JMenu("Edit"), new JMenu("Help"), };
        JMenuItem[][] menuitems = new JMenuItem[][] {
                {
                    new JMenuItem("New"), new JMenuItem("Open..."), new JMenuItem("Save..."),
                    new JMenuItem("Exit")
                },
                {
                    new JMenuItem("Copy"), new JMenuItem("Cut"), new JMenuItem("Paste"),
                    new JMenuItem("Color...")
                },
                { new JMenuItem("About") }
            };    newtest() {
            inittextpane();
            initmenu();
            initaboutdialog();
        }    void inittextpane() {
            getContentPane().add(new JScrollPane(text));
        }    void initmenu() {
            for (int i = 0; i < menus.length; i++) {
                menubar.add(menus[i]);            for (int j = 0; j < menuitems[i].length; j++) {
                    menus[i].add(menuitems[i][j]);
                    menuitems[i][j].addActionListener(this);
                }
            }        this.setJMenuBar(menubar);
        }    public void actionPerformed(ActionEvent e) {
            JMenuItem mi = (JMenuItem) e.getSource();
            String id = mi.getText();        if (id.equals("New")) {
                text.setText("");
                file = null;
            } else if (id.equals("Open...")) {
                if (file != null) {
                    filechooser.setSelectedFile(file);
                }            int returnVal = filechooser.showOpenDialog(newtest.this);            if (returnVal == JFileChooser.APPROVE_OPTION) {
                    file = filechooser.getSelectedFile();
                    openFile();
                }
            } else if (id.equals("Save...")) {
                if (file != null) {
                    filechooser.setSelectedFile(file);
                }            int returnVal = filechooser.showSaveDialog(newtest.this);            if (returnVal == JFileChooser.APPROVE_OPTION) {
                    file = filechooser.getSelectedFile();
                    saveFile();
                }
            } else if (id.equals("Exit")) {
                System.exit(0);
            } else if (id.equals("Cut")) {
                text.cut();
            } else if (id.equals("Copy")) {
                text.copy();
            } else if (id.equals("Paste")) {
                text.paste();
            } else if (id.equals("Color...")) {
                color = JColorChooser.showDialog(this, "", color);
                text.setForeground(color);
            } else if (id.equals("About")) {
                about.setSize(100, 50);
                about.show();
            }
        }    void saveFile() {
            try {
                FileWriter fw = new FileWriter(file);
                fw.write(text.getText());
                fw.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }    void openFile() {
            try {
                FileReader fr = new FileReader(file);
                int len = (int) file.length();
                char[] buffer = new char[len];
                fr.read(buffer, 0, len);
                fr.close();
                text.setText(new String(buffer));
            } catch (Exception e) {
                e.printStackTrace();
            }
        }    void initaboutdialog() {
            JLabel jb = new JLabel("a sample test");
            about.getContentPane().add(jb);
            about.setModal(true);
            about.setSize(100, 50);
        }
    }
    public class testeditapp {
        public static void main(String[] args) {
            newtest f = new newtest();
            f.setTitle("a test app");
            f.setSize(590, 400);
            f.show();
        }
    }