2009-12-04 62 views
3

我有一個帶有JTextArea組件的JDialog。這個對話框顯示用戶在運行程序時使用什麼參數,讓它運行它們剛剛設置的模式。我在對話框上有一個按鈕來將參數複製到剪貼板。這在JTextArea對象上使用copy()方法。程序退出時清除JTextArea.copy()剪貼板

這很好地工作,剪貼板包含正確的文本,直到程序關閉。然後剪貼板丟失。無論如何要在程序退出後保留這一點嗎?正常的操作將是然後退出程序並用參數重新啓動它。

這可能聽起來很奇怪,但想法是用戶可以用GUI設置一個環境,然後用cron或類似的參數運行它。

+0

即使你得到這個工作,是不是它受制於用戶在程序執行之後但在程序使用之前不在剪貼板上放置東西?這意味着用戶可能會意外地搞砸了你的程序。 – TofuBeer 2009-12-04 16:24:50

+0

嗨@Android你有沒有找到解決你的問題的方法? – pratikabu 2013-06-14 16:00:24

回答

0

我建議使用Preferences API代替。

+0

該參數是它應該加載的配置文件的路徑。用戶可能會設置很多這樣的內容,所以我不能只擁有一個始終在啓動時加載的默認文件。 – 2009-12-04 08:13:18

+0

但是你一次只能在剪貼板中找到其中的一個。所以當他們通過按鈕改變它時,將它保存到剪貼板,然後程序使用該值。我所建議的是同樣的事情 - 按下按鈕並通過首選項保存它,然後當程序查找它而不是查看剪貼板時,它使用首選項來抓取它。相同的數據,相同的流量,只是在不同的地方看。 – TofuBeer 2009-12-04 08:28:13

1

我剛纔瞭解到,在Java中有兩個剪貼板,一個是本地剪貼板,一個是系統剪貼板。會解釋一些事情,如果你只是拿本地剪貼板。

Here's an example使用系統剪貼板。希望它能解決你的問題!

+0

這個工程,但程序關閉時仍然有同樣的問題。 – 2009-12-04 10:45:01

+0

非常非常奇怪 - 你能否仔細檢查一下,如果你在關閉應用程序之前不意外地將一些空的或其他物體複製到剪貼板,iaw,意外覆蓋內容? – 2009-12-04 10:58:57

+0

我只是複製粘貼並運行該鏈接上的程序。程序退出時剪貼板被清除。在最後一行添加了一個thread.sleep,文本在剪貼板上直到它結束。 – 2009-12-04 11:37:28

1

當我使用Ctrl + C複製文本組件的內容時,適用於我。因此,嘗試使用附帶的行動(這是按Ctrl + C使用)來完成,而不是copy()方法的副本:

JButton button = new JButton(DefaultEditorKit.CopyAction()); 
1

可以使用機器人來模擬按Ctrl + C

Robot robot = new Robot(); 
robot.keyPress(KeyEvent.VK_CONTROL); 
robot.keyPress(KeyEvent.VK_C); 
robot.keyRelease(KeyEvent.VK_C); 
robot.keyRelease(KeyEvent.VK_CONTROL); 

即使在關閉程序後,這些仍然會保留在剪貼板中。

或者你可以嘗試

StringSelection ss = new StringSelection("your text for clipboard"); 
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(ss, null); 

其在Windows 7

+0

有趣的是,在Linux中剪貼板在程序終止時丟失。即使手動CTRL-C也會丟失。 – 2011-01-14 18:20:29

0

對我的作品對我來說,這僅僅是不夠的:

JButton buttonCopy = new JButton(new DefaultEditorKit.CopyAction()); 
buttonCopy.setText("copy");