Слушатель фрейма на тильду (~) - Java
Формулировка задачи:
Как-то я не могу сделать слушатель на тильду.. -_-
Эта строка не работает...
if (key.getKeyCode() == KeyEvent.VK_DEAD_TILDE)
И почему вообще мертвая тильда?.. 0_о
Оказывается, у меня вообще не вешается слушатель на фрейм...
Почему строка getContentPane().addKeyListener(new KeyListener() - не работает? При появлении фрейма - очевидно, слушатель не активен. Номер ~ я вроде нашел уже..
getContentPane().addKeyListener(new KeyListener() { @Override public void keyPressed(KeyEvent key) { System.out.println("Код => " + key.getKeyCode()); if (key.getKeyCode() == 192) .....
Нет никаких сообщений в консоли! Все мертвое..
Блин, да что за... Пытался сделать невидимую кнопку debug и на нее поставить горячую клавишу для слушателя - снова ноль эмоций!
debug.setMnemonic(KeyEvent.VK_F11); - при нажатии на F11 ничего не происходит!
НАшел в инете пример, но совершенно не понимаю, что тут вообще происходит? Я не правильно понимаю назначение мнемоники?..
// create an Action doing what you want Action action = new AbstractAction("doSomething") { @Override public void actionPerformed(ActionEvent e) { System.out.println("triggered the action"); } }; // configure the Action with the accelerator (aka: short cut) action.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke("control S")); // create a button, configured with the Action JButton toolBarButton = new JButton(action); // manually register the accelerator in the button's component input map toolBarButton.getActionMap().put("myAction", action); toolBarButton.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put( (KeyStroke) action.getValue(Action.ACCELERATOR_KEY), "myAction");
черт побери, с этим кодом кнопка не работает, только закрывает появляющйся фрем с клавиш, а клавиши не закрывают, только открывают его! А если кнопку сделать невидимой, вообще не работает.... уф!.....
В общем, я провозился вечер и так и не смог толком сделать простую гор.клавину в Фрейме. Как минимум из-за огрничения на фокус окна для работы клавиши! Кошмар.
КейЛистенеры в Фреме не работают, других для перехвата клавиш я не нашел. В Яве все на столько плохо?!
Решение задачи: «Слушатель фрейма на тильду (~)»
textual
Листинг программы
System.out.println(getConentPane() instanceof JFrame)
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д