程序退出时清除JTextArea.copy()剪贴板

时间:2009-12-04 07:50:16

标签: java clipboard

我有一个带有JTextArea组件的JDialog。此对话框向用户显示运行程序时要使用的参数,以使其运行刚刚设置的模式。我在对话框上有一个按钮,用于将参数复制到剪贴板。这使用了JTextArea对象上的copy()方法。

这完美无缺,剪贴板包含正确的文本,直到程序关闭。然后剪贴板丢失了。在程序退出后,有没有保留它?正常的操作是退出程序并使用参数再次启动它。

这可能听起来很奇怪,但想法是用户会使用GUI设置一个环境,然后使用cron或类似的参数运行它。

5 个答案:

答案 0 :(得分:1)

我刚刚了解到,Java中有两个剪贴板,一个是本地剪贴板,另一个是系统剪贴板。如果你只是拿了当地的剪贴板,可以解释一下。

使用系统剪贴板的

Here's an example。希望它能解决你的问题!

答案 1 :(得分:1)

当我使用Ctrl + C复制文本组件的内容时,对我来说很好。因此,尝试使用提供的Action(这是Ctrl + C使用的)来执行复制而不是copy()方法:

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

答案 2 :(得分:1)

您可以使用Robot来模拟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。

答案 3 :(得分:0)

我建议改为使用Preferences API

答案 4 :(得分:0)

对我来说,这就够了:

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