Как реализовать свой собственный эффективный слушатель ОС? - PullRequest
0 голосов
/ 24 января 2019

Как создать свой собственный слушатель, который будет эффективно слушать ОС на 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, но я не уверен, как.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...