Как создать свой собственный слушатель, который будет эффективно слушать ОС на Java?Например, как ActionListener в Swing, который реагирует на нажатия кнопок.
Я хочу создать программу, которая регистрирует буфер обмена пользователя, но я не хочу использовать такой цикл:
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 и notfiy, но я не уверен, как.