[問題] 剪貼簿的問題

看板java作者時間13年前 (2012/12/26 08:41), 編輯推噓0(004)
留言4則, 2人參與, 最新討論串1/1
一直沒辦法解決 做了一些實驗後發現有下面這個問題 先附上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
有無試過讓 text field 自己做 copy 的動作?不要用Robot
12/29 01:02, 1F

12/29 01:03, , 2F
JTextComponent::copy method
12/29 01:03, 2F

12/31 10:50, , 3F
其實我是要做一個自動複製欄位資料 然後填到另一個視窗裡面
12/31 10:50, 3F

12/31 10:54, , 4F
所以要用robot去選然後copy 去取得視窗程式欄位的資料
12/31 10:54, 4F
文章代碼(AID): #1GsaUzH0 (java)