很模糊啊 不知道你说的地方再那里
为什么会这样?????
按copy键时,有时正常,有时候被选择的字符串就会向后移动一个。
比如:字符串是“123456789”选择拉其中的“234”当按拉copy时选择的就变成拉“345”,
      而且按paste时(粘贴),是粘贴的“345”,而不是“234”;

解决方案 »

  1.   

    我把a.appen(String)改成啊。a.insert(String s)
    就可以随即插入要插的地方
    但是我上面说的copy和cut只在第一行正常 在下面的行就不正常拉啊
      

  2.   

    给你改好了,你测试一下import java.awt.*;
    import java.awt.event.*;
    import java.io.*;
    import java.awt.datatransfer.*;public class Note extends Frame implements ActionListener {
    MenuItem menuFileOpen;
    MenuItem menuFileClose;
    MenuItem menuFileSave;
    MenuItem menuFileSaveAs;
    MenuItem menuFileExit;
    MenuItem menuEditPaste;
    MenuItem menuEditCopy;
    MenuItem menuEditCut;
    FileDialog load = new FileDialog(this, "打开文件", FileDialog.LOAD);
    TextArea a = new TextArea(6, 15); public Note() {
    load.setVisible(false);
    add(a, BorderLayout.CENTER);
    MenuBar menuBar = new MenuBar();
    Menu menuFile = new Menu("File");
    menuFileExit = new MenuItem("Exit");
    menuFileOpen = new MenuItem("Open");
    menuFileClose = new MenuItem("Close");
    menuFileSave = new MenuItem("Save");
    menuFileSaveAs = new MenuItem("Save As...");
    Menu menuEdit = new Menu("Edit");
    menuEditCopy = new MenuItem("Copy");
    menuEditCut = new MenuItem("Cut");
    menuEditPaste = new MenuItem("Paste"); menuFile.add(menuFileOpen);
    menuFile.add(menuFileClose);
    menuFile.add(menuFileSave);
    menuFile.add(menuFileSaveAs);
    menuFile.addSeparator();
    menuFile.add(menuFileExit);
    menuBar.add(menuFile);
    menuEdit.add(menuEditCopy);
    menuEdit.add(menuEditCut);
    menuEdit.add(menuEditPaste);
    menuBar.add(menuEdit);

    menuFileExit.addActionListener(this);
    menuFileOpen.addActionListener(this);
    menuFileClose.addActionListener(this);
    menuFileSave.addActionListener(this);
    menuFileSaveAs.addActionListener(this);
    menuEditCopy.addActionListener(this);
    menuEditCut.addActionListener(this);
    menuEditPaste.addActionListener(this);
    // Add action listener.for the menu button
    this.addWindowListener(new WindowAdapter() {
    public void windowClosing(WindowEvent e) {
    dispose();
    }
    }); setTitle("Writer_Panel");
    setMenuBar(menuBar);
    setSize(new Dimension(400, 400));
    } public void actionPerformed(ActionEvent ae) {
    Clipboard clipboard = this.getToolkit().getSystemClipboard();
    if (ae.getSource() == menuEditCopy) {
    String sele = a.getSelectedText();
    StringSelection stringselection = new StringSelection(sele);
    clipboard.setContents(stringselection, null);
    }
    if (ae.getSource() == menuEditCut) {
    Cursor g = a.getCursor();
    int f = a.getSelectionStart();
    int e = a.getSelectionEnd();
    String tmpstr = a.getText();
    String sele = a.getSelectedText();
    StringSelection stringselection = new StringSelection(sele);
    clipboard.setContents(stringselection, null);
    tmpstr = tmpstr.substring(0, f) + tmpstr.substring(e);
    a.setText(tmpstr);
    a.setCursor(g);
    }
    if (ae.getSource() == menuEditPaste) {
    Cursor g = a.getCursor();
    int f = a.getSelectionStart();
    int e = a.getSelectionEnd();
    String tmpstr = a.getText();
    Transferable transferable = clipboard.getContents(this);
    DataFlavor dataflavor = DataFlavor.stringFlavor;
    if (transferable.isDataFlavorSupported(dataflavor)) {
    try {
    String sele_2 = (String) transferable
    .getTransferData(dataflavor);
    tmpstr = tmpstr.substring(0, f) + sele_2
    + tmpstr.substring(e);
    a.setText(tmpstr);
    a.setCursor(g);
    } catch (Exception ee) {
    }
    }
    }
    BufferedReader in;
    File file;
    if (ae.getSource() == menuFileExit) {
    System.exit(0);
    this.dispose();
    }
    if (ae.getSource() == menuFileClose)
    a.setText("");
    if (ae.getSource() == menuFileOpen) {
    load.setVisible(true);
    String s = new String();
    try {
    file = new File(load.getDirectory(), load.getFile());
    FileReader file_reader = new FileReader(file);
    in = new BufferedReader(file_reader);
    while ((s = in.readLine()) != null)
    a.append(s + '\n');
    in.close();
    file_reader.close();
    } catch (Exception ee) {
    }
    }
    } public static void main(String args[]) {
    Note frame = new Note();
    frame.setVisible(true);
    }
    }