很模糊啊 不知道你说的地方再那里
为什么会这样?????
按copy键时,有时正常,有时候被选择的字符串就会向后移动一个。
比如:字符串是“123456789”选择拉其中的“234”当按拉copy时选择的就变成拉“345”,
而且按paste时(粘贴),是粘贴的“345”,而不是“234”;
为什么会这样?????
按copy键时,有时正常,有时候被选择的字符串就会向后移动一个。
比如:字符串是“123456789”选择拉其中的“234”当按拉copy时选择的就变成拉“345”,
而且按paste时(粘贴),是粘贴的“345”,而不是“234”;
就可以随即插入要插的地方
但是我上面说的copy和cut只在第一行正常 在下面的行就不正常拉啊
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);
}
}