Re[7]: Работа с клавиатурой в java
От: Lucker Беларусь http://lucker.intervelopers.com/
Дата: 15.03.04 08:26
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Здравствуйте, Lucker, Вы писали:


L>>Здравствуйте, <Аноним>, Вы писали:


А>>>А можно сделать так что бы по нажатию на пробел любая кнопка которая в фокусе не нажималась а нажималась та кнопка для которой явно определена такая акция ?


L>>я так думаю, надо просто удалить соответствующий KeyStroke с WHEN_FOCUSED InputMap кнопки.

L>>
L>>button.getInputMap(JComponent.WHEN_FOCUSED).remove(KeyStroke.getKeyStroke(KeyEvent.VK_SPACE, 0));

L>>



А>Спасибо большое !!!

А>я составил тестовый пример для проверки ... не работает

А>
А>import javax.swing.*;
А>import java.awt.event.KeyEvent;

А>public class Test2 extends JFrame{
А>    JButton jb = new JButton("Test");
А>    JPanel jp = new JPanel();
А>    public Test2() {
А>        jb.getInputMap(JComponent.WHEN_FOCUSED).remove(KeyStroke.getKeyStroke(KeyEvent.VK_SPACE, 0));
А>        jp.add(jb);
А>        getContentPane().add(jp);
А>    }
А>     public static void main(String args[]) {
А>        Test2 frame = new Test2();
А>        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
А>        frame.setBounds(200, 200, 300, 200);
А>        frame.show();
А>    }
А>}
А>

стормозил
 jb.getInputMap(JComponent.WHEN_FOCUSED).put(KeyStroke.getKeyStroke(KeyEvent.VK_SPACE, 0), "none");

просто UIManager при первой прорисове установит дефултные значения в InputMap (а это роизойдет после вызова конструктора).
А если мы сами установим значение в InputMap — UIManager его не заменит. Вот.
... << RSDN@Home 1.1.3 stable >>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.