一直沒辦法解決 做了一些實驗後發現有下面這個問題
先附上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
→
12/29 01:02, , 1F
12/29 01:02, 1F
→
12/29 01:03, , 2F
12/29 01:03, 2F
→
12/31 10:50, , 3F
12/31 10:50, 3F
→
12/31 10:54, , 4F
12/31 10:54, 4F