如何创建自己的监听器,以Java高效地监听操作系统?例如,像Swing中的ActionListener一样,它会对按钮的点击做出反应。
我想制作一个记录用户剪贴板的程序,但是我不想使用这样的循环:
while (flag)
{
Transferable t = Toolkit.getDefaultToolkit()
.getSystemClipboard()
.getContents(null);
if (t != null && t.isDataFlavorSupported(DataFlavor.stringFlavor))
{
try
{
String text = (String) t
.getTransferData(DataFlavor.stringFlavor);
System.out.println(text);
}
catch (UnsupportedFlavorException e1)
{
e1.printStackTrace();
}
catch (IOException e1)
{
e1.printStackTrace();
}
}
Thread.sleep(1000);
}
我希望处理器仅在剪贴板更改时才能工作,而不是每秒检查一次。
第二,我找到了一种可能有效的方法
this.clipboard = Toolkit.getDefaultToolkit()
.getSystemClipboard();
this.clipboard.addFlavorListener(new FlavorListener()
{
@Override
public void flavorsChanged(FlavorEvent e)
{
// work with the clipboard contents
}
});
但是我仍然需要一个奇怪的while循环,该循环会消耗处理器时间来使程序保持活动状态。
我认为我应该使用wait and notfiy,但是我不确定如何使用。