Слушать 3 жеста пальца? - PullRequest
1 голос
/ 31 мая 2019

Я делаю Java-приложение для своего учителя информатики, которое позволяет ему проводить тестирование в цифровом виде, загружая несколько PDF-файлов из папки Google Drive и отображая их на JScrollPane с помощью Java Swing.Цель этого приложения - сделать тест неизбежным, чтобы учащиеся не могли обмануть, перейдя в Google, чтобы найти ответы.Затем в конце урока мой учитель скажет учащимся код, который позволит им выйти из приложения, введя его в JTextField.В настоящее время JFrame этого приложения имеет следующие настройки:

Frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);

Это означает, что по большей части приложение неизбежно, и пользователь остается в JFrame, пока не введет код длявыход.Проблема, с которой я сталкиваюсь, заключается в том, что существуют определенные способы выхода из приложения или минимизации его с помощью встроенных в компьютер жестов.В частности, один из них, который я рассматриваю, включает в себя троекратное нажатие на трекпад, что минимизирует приложение, позволяя пользователю открывать Google.Насколько мне известно, нет никакого способа временно отключить встроенные в компьютер жесты, поэтому следующий лучший вариант, который я вижу, - это прослушивание пользователем нажатия трех пальцев на трекпад, а затем лишение пользователя возможности прокрутки.Есть ли способ сделать это ?Кроме того, если есть другие способы выхода из этого приложения без кода выхода, каковы эти способы?И как я мог бы помешать пользователю воспользоваться ими?

Frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
Frame.setUndecorated(true);
Frame.setVisible(true);
Frame.setAlwaysOnTop(true);
Frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);

Кроме того, если есть другие способы выхода из этого приложения без кода выхода, что это за способы?И как я могу помешать пользователю воспользоваться ими?

1 Ответ

0 голосов
/ 31 мая 2019

Вы можете попробовать использовать WindowAdapter, чтобы заблокировать минимизацию вашего JFrame.WindowAdapter должен просто перезаписать действие по умолчанию вашего JFrame, когда нажата кнопка «Свернуть» (или записан жест).

private WindowAdapter getWindowAdapter(JFrame frm) {
return new WindowAdapter() {
  @Override
  public void windowIconified(WindowEvent we) {
    frm.setState(JFrame.NORMAL);
  }
};

И добавить WindowListener в ваш JFrame:

frm.addWindowListener(getWindowAdapter(frm));
...