我有一个带有JTextArea组件的JDialog。此对话框向用户显示运行程序时要使用的参数,以使其运行刚刚设置的模式。我在对话框上有一个按钮,用于将参数复制到剪贴板。这使用了JTextArea对象上的copy()方法。
这完美无缺,剪贴板包含正确的文本,直到程序关闭。然后剪贴板丢失了。在程序退出后,有没有保留它?正常的操作是退出程序并使用参数再次启动它。
这可能听起来很奇怪,但想法是用户会使用GUI设置一个环境,然后使用cron或类似的参数运行它。
答案 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");