作者TPNEW ()
看板java
标题[问题] 剪贴簿的问题
时间Wed Dec 26 08:41:30 2012
一直没办法解决 做了一些实验後发现有下面这个问题
先附上get & set 剪贴簿内容的code
====================================Set=====================================
public static void setClipboardContents(String str){
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
StringSelection stringselection = new StringSelection(str);
clipboard.setContents(stringselection, null);
}
====================================Get======================================
public static 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 ex){
//highly unlikely since we are using a standard DataFlavor
System.out.println(ex);
ex.printStackTrace();
}
catch (IOException ex) {
System.out.println(ex);
ex.printStackTrace();
}
}
return result;
}
=============================================================================
我做了一个测试用的介面 用按钮去执行复制&贴上的动作
按钮A动作的内容很简单
T1.requestFocusInWindow();
T1.selectAll();
//T1是个textfield
try {
Robot RB = new Robot();
RB.keyPress(KeyEvent.VK_CONTROL);
RB.keyPress(KeyEvent.VK_C);
RB.keyRelease(KeyEvent.VK_C);
RB.keyRelease(KeyEvent.VK_CONTROL);
RB.delay(20);
System.out.println(getClipboardContents());
} catch (Exception e2) {
System.out.println(e2);
}
//就是全选T1的内容 然後用Robot按下ctrl+c 然後把剪贴簿的内容show出来
另一个是 按钮B 动作更简单
System.out.println(getClipboardContents());
结果就是 假设我先随便复制一个字串假设是 XXX 然後T1的内容是YYY
按钮A的结果 XXX
接着直接按下按钮B 结果是 YYY
十分的奇妙 这好像就是我按钮A的动作还没结束前 剪贴簿的内容都不会改变的样子
希望有人能解答
PS:环境是XP 用到了系统的剪贴簿 应该要报个作业系统吧(?)
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.125.210.217
1F:→ sbrhsieh:有无试过让 text field 自己做 copy 的动作?不要用Robot 12/29 01:02
2F:→ sbrhsieh:JTextComponent::copy method 12/29 01:03
3F:→ TPNEW:其实我是要做一个自动复制栏位资料 然後填到另一个视窗里面 12/31 10:50
4F:→ TPNEW:所以要用robot去选然後copy 去取得视窗程式栏位的资料 12/31 10:54