gpt4 book ai didi

java - 无法从 Mac OS X 上的后台 Java 应用程序监视系统剪贴板更改

转载 作者:行者123 更新时间:2023-11-30 11:50:55 31 4
gpt4 key购买 nike

我有一个 java 程序,它在后台运行并监视系统剪贴板的变化(我通过轮询来做到这一点,因为这似乎是除了“所有权变体”之外的唯一方法,我必须重新设置一直满足成为所有者)。如果它发现特定格式的输入文本,它会处理该文本并用结果覆盖剪贴板(这样我可以复制输入并在程序在后台运行时立即粘贴结果)。

到目前为止,这在 Windows 上运行良好,但在 Mac OS X 上运行相同的程序时,行为有点奇怪。只要我不将我的结果复制到系统剪贴板中,轮询机制本身就会按预期工作。但是目前我第一次将剪贴板内容设置在 java 程序之外,它仅在激活时才识别 future 的外部更改。所以我不能让它在后台运行,而是我必须一直“复制输入 -> 切换到 java 程序 -> 切换回来 -> 粘贴结果”。

因为这很烦人,而这正是我想通过这种“剪贴板监控 -> 结果粘贴”方法避免的事情,如果有任何解决该问题的想法,我将非常高兴。

编辑:一些代码碎片

public void setClipboardText(String text) {
if (text == null) {
throw new NullPointerException();
}

synchronized (this.lastFoundTextLock) {
this.lastFoundText = text;

Toolkit.getDefaultToolkit().getSystemClipboard()
.setContents(new StringSelection(text), null);
}
}

public String getClipboardText() {
Transferable t = Toolkit.getDefaultToolkit().getSystemClipboard().
getContents(null);

try {
if (t != null && t.isDataFlavorSupported(DataFlavor.stringFlavor)) {
String text = (String) t.getTransferData(DataFlavor.stringFlavor);
return text;
}
} catch (UnsupportedFlavorException e) {
} catch (IOException e) {
}

return null;
}

public void run() {
while (true) {
String currentClipboardText = getClipboardText();
boolean isNew;

synchronized (this.lastFoundTextLock) {
isNew = ((this.lastFoundText != null) || (currentClipboardText != null))
&& ((currentClipboardText == null) || !currentClipboardText
.equals(this.lastFoundText));

if (isNew) {
this.lastFoundText = currentClipboardText;
}
}

if (isNew && currentClipboardText != null) {
//new text found
fireNewClipboardTextFound(currentClipboardText);
}

try {
Thread.sleep(this.automaticCheckInterval);
} catch (InterruptedException e) {
// ignore
}

synchronized (this.monitorRunningLock) {
if (!this.monitorRunning) {
break;
}
}
}
}

最佳答案

我看到其他几个人已经尝试过您正在尝试的事情 (Can't copy to a clipboard from a background java application on MAC OSX) 并且取得了微不足道的成功 (Copying to Clipboard in Java) 并且很少有好的答案 (java/swing: clipboard paste) 但您可能想进一步调查......任何人都可以还有关于这个问题的 Java 6 变化的评论吗?

关于java - 无法从 Mac OS X 上的后台 Java 应用程序监视系统剪贴板更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7717824/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com