Слушатель фрейма на тильду (~) - 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)