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

发布于 2024-08-13 15:36:06 字数 268 浏览 4 评论 0原文

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

这工作得很好,剪贴板包含正确的文本,直到程序关闭。然后剪贴板就丢失了。无论如何,有没有办法在程序退出后保留它?正常的操作是退出程序并使用参数重新启动它。

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

I have a JDialog with a JTextArea component. This dialog shows the user what arguments to use when running the program to have it run the mode they just set up. I have a button on the dialog to copy the arguments to clipboard. This uses the copy() method on the JTextArea object.

This works perfectly and the clipboard contains the correct text up until the program is closed. Then the clipboard is lost. Is there anyway to have it retain this after the program is quit? The normal operation would be to then quit the program and start it again with the arguments.

This might sound strange but the idea is the user would setup an environment with the GUI and then run it with the arguments in a cron or similar.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

习ぎ惯性依靠 2024-08-20 15:36:06

我刚刚了解到,Java中有两个剪贴板,一个本地剪贴板,一个系统剪贴板。如果你只是拿了本地剪贴板,会解释一些事情。

这是一个使用系统剪贴板的示例。希望它能解决您的问题!

I just learned, that there are two clipboards in Java, a local one and a system one. Would explain something, if you just took the local clipboard.

Here's an example that uses the system clipboard. Hope it solves your issue!

欲拥i 2024-08-20 15:36:06

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

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

Works fine for me when I use Ctrl+C to copy the contents of the text component. So try using the supplied Action (which is what Ctrl+C uses) to do the copy instead of the copy() method:

JButton button = new JButton(DefaultEditorKit.CopyAction());
冧九 2024-08-20 15:36:06

您可以使用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 中适合我的方法。

You can use Robot to simulate 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 );

This will definitely stays in the clipboard even after you close your program.

Or you can try

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

which works for me in Windows 7.

我一直都在从未离去 2024-08-20 15:36:06

I would suggest using the Preferences API for this instead.

许仙没带伞 2024-08-20 15:36:06

对我来说,这就足够了:

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

For me, this is just enough:

JButton buttonCopy = new JButton(new DefaultEditorKit.CopyAction());
buttonCopy.setText("copy");
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文