Windows 剪贴板 Java 程序不工作
Windows Clipboard Java Programm Does Not Work
public class ClipBoardListener extends Thread implements ClipboardOwner{
Clipboard sysClip = Toolkit.getDefaultToolkit().getSystemClipboard();
public void run() {
Transferable trans = sysClip.getContents(this);
TakeOwnership(trans);
while(true) {
}
}
public void lostOwnership(Clipboard c, Transferable t) {
try {
ClipBoardListener.sleep(250); //waiting e.g for loading huge elements like word's etc.
} catch(Exception e) {
System.out.println("Exception: " + e);
}
Transferable contents = sysClip.getContents(this);
try {
process_clipboard(contents, c);
} catch (Exception ex) {
Logger.getLogger(ClipBoardListener.class.getName()).log(Level.SEVERE, null, ex);
}
TakeOwnership(contents);
}
void TakeOwnership(Transferable t) {
sysClip.setContents(t, this);
}
public void process_clipboard(Transferable t, Clipboard c) { //your implementation
String tempText;
Transferable trans = t;
try {
if (trans != null?trans.isDataFlavorSupported(DataFlavor.stringFlavor):false) {
tempText = (String) trans.getTransferData(DataFlavor.stringFlavor);
addStringToClipBoard(tempText);
}
} catch (Exception e) {
}
}
public static void addStringToClipBoard(String cache) {
StringSelection selection = new StringSelection(cache.trim());
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
clipboard.setContents(selection,null);
}
public static void main(String[] args) {
ClipBoardListener c = new ClipBoardListener();
c.start();
}
}
德语翻译:
你好,我试着写了一个程序,我可以用它来编辑 Windows 剪贴板。我想要插入的时候前后空格都没有了
我就是这样实现的。但是没用。
示例:我复制这个字符串“Hello World”并插入“Hello World”。
有人知道吗?
谢谢
德语翻译:
你好我试着写了一个程序来编辑Windows的剪贴板。我想让插入的时候前后空格都没有
我是这样实现的。但是没用。
示例:复制此字符串“Hello World”并粘贴“Hello World”。
有人知道吗?
谢谢
注释掉 lostOwnership()
中的 TakeOwnership
行。它会重置您刚刚在前面的 process_clipboard
调用中更改的原始剪贴板内容。
//TakeOwnership(contents);
并使其成为非静态的/使用“this”:
public void addStringToClipBoard(String cache) {
StringSelection selection = new StringSelection(cache.trim());
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
clipboard.setContents(selection,this);
}
在此示例中,您的 class 不必是 Thread
,因为您可以直接在 main
中调用 c.run()
。具有紧密 CPU 循环 while(true) {}
的方法不是一个好主意 - 等待一些退出条件。
public class ClipBoardListener extends Thread implements ClipboardOwner{
Clipboard sysClip = Toolkit.getDefaultToolkit().getSystemClipboard();
public void run() {
Transferable trans = sysClip.getContents(this);
TakeOwnership(trans);
while(true) {
}
}
public void lostOwnership(Clipboard c, Transferable t) {
try {
ClipBoardListener.sleep(250); //waiting e.g for loading huge elements like word's etc.
} catch(Exception e) {
System.out.println("Exception: " + e);
}
Transferable contents = sysClip.getContents(this);
try {
process_clipboard(contents, c);
} catch (Exception ex) {
Logger.getLogger(ClipBoardListener.class.getName()).log(Level.SEVERE, null, ex);
}
TakeOwnership(contents);
}
void TakeOwnership(Transferable t) {
sysClip.setContents(t, this);
}
public void process_clipboard(Transferable t, Clipboard c) { //your implementation
String tempText;
Transferable trans = t;
try {
if (trans != null?trans.isDataFlavorSupported(DataFlavor.stringFlavor):false) {
tempText = (String) trans.getTransferData(DataFlavor.stringFlavor);
addStringToClipBoard(tempText);
}
} catch (Exception e) {
}
}
public static void addStringToClipBoard(String cache) {
StringSelection selection = new StringSelection(cache.trim());
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
clipboard.setContents(selection,null);
}
public static void main(String[] args) {
ClipBoardListener c = new ClipBoardListener();
c.start();
}
}
德语翻译:
你好,我试着写了一个程序,我可以用它来编辑 Windows 剪贴板。我想要插入的时候前后空格都没有了
我就是这样实现的。但是没用。
示例:我复制这个字符串“Hello World”并插入“Hello World”。
有人知道吗? 谢谢
德语翻译:
你好我试着写了一个程序来编辑Windows的剪贴板。我想让插入的时候前后空格都没有
我是这样实现的。但是没用。
示例:复制此字符串“Hello World”并粘贴“Hello World”。
有人知道吗? 谢谢
注释掉 lostOwnership()
中的 TakeOwnership
行。它会重置您刚刚在前面的 process_clipboard
调用中更改的原始剪贴板内容。
//TakeOwnership(contents);
并使其成为非静态的/使用“this”:
public void addStringToClipBoard(String cache) {
StringSelection selection = new StringSelection(cache.trim());
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
clipboard.setContents(selection,this);
}
在此示例中,您的 class 不必是 Thread
,因为您可以直接在 main
中调用 c.run()
。具有紧密 CPU 循环 while(true) {}
的方法不是一个好主意 - 等待一些退出条件。