我正在尝试使用Java机器人编写代码,该代码将使用 ctrl + c 复制文本,然后我从剪贴板中读取它。我使用的代码是:
Robot robot = new Robot();
robot.delay(1000);
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(VK_C);
robot.keyRelease(VK_C);
robot.keyRelease(KeyEvent.VK_CONTROL);
String str=(String)Toolkit.getDefaultToolkit().getSystemClipboard().getData(DataFlavor.stringFlavor);
但是str
不包含应该复制的值。
答案 0 :(得分:-1)
如果您想使用Ctrl + c / x / v剪贴板附加到JTextArea,则应使用Clipboard,StringSelection和DataFlavour类。请考虑以下代码段:
@Override
public void lostOwnership(Clipboard clipboard, Transferable contents) {}
public void setClipboardContents(String str){
StringSelection stringSelection = new StringSelection(str);
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
clipboard.setContents(stringSelection, this);
}
public String getClipboardContents() {
String result = "";
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
Transferable contents = clipboard.getContents(null);
boolean hasTransferableText = (contents != null) && contents.isDataFlavorSupported(DataFlavor.stringFlavor);
if (hasTransferableText) {
try {
result = (String)contents.getTransferData(DataFlavor.stringFlavor);
}
catch (UnsupportedFlavorException e){
LOG.log(Level.SEVERE, e.getLocalizedMessage());
} catch(IOException e){
LOG.log(Level.SEVERE, e.getLocalizedMessage());
}
}
return result;
}
@Override
public void keyTyped(KeyEvent e) {}
@Override
public void keyPressed(KeyEvent e) {
if ((e.getKeyCode() == KeyEvent.VK_C) && ((e.getModifiers() & KeyEvent.CTRL_MASK) != 0)) {
// your code here
}
if ((e.getKeyCode() == KeyEvent.VK_V) && ((e.getModifiers() & KeyEvent.CTRL_MASK) != 0)) {
// your code here
}
if ((e.getKeyCode() == KeyEvent.VK_X) && ((e.getModifiers() & KeyEvent.CTRL_MASK) != 0)) {
// your code here
}
}
@Override
public void keyReleased(KeyEvent e) {}
当然你也应该实现KeyListener和ClipboardOwner接口。
我使用带有KeyListener的swing布局,因此用户可以使用Ctrl + c / x / v快捷方式复制/粘贴数据。
但是,如果您想使用Robot类,请参阅以下链接:
http://www.java-tips.org/java-se-tips/java.awt/how-to-use-robot-class-in-java.html
http://alvinalexander.com/java/java-robot-class-example-mouse-keystroke