Здравствуйте, <Аноним>, Вы писали:
А>Здравствуйте, 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 >>