2013-08-14 5 views
0

Это мой JButton, «Я могу показать полный код»,Activate JButton с клавиатуры

 JButton cor =new JButton(); 
     cor.setText("Coor"); 
     mainframe.add(cor); 
     window.getContentPane().add(mainframe); 
     window.pack(); 
     window.setVisible(true); 

мне нужна помощь с, как активировать эту кнопку с помощью клавиатуры, например, нажмите «CTRL + A»

У меня есть красные веб-сайты и выясните, что я должен использовать «Ключи для ключей», но все же могу получить, как это сделать.

Пожалуйста, не говорите, что эта тема дублируется, потому что предыдущие темы мне не помогают.

cor.getInputMap().put(KeyStroke.getKeyStroke("F2"),"act"); 

Action act = new AbstractAction() { 
      public void actionPerformed(ActionEvent e) { 
       PointerInfo a = MouseInfo.getPointerInfo(); 
       Point b = a.getLocation(); 
       int xC = (int) b.getX(); 
       int yC = (int) b.getY(); 
       textArea.replaceSelection("X-Coordinates:" + xC + " Y-Coordinates: " + yC + "\n"); 
      } 
     }; 
+2

Никто не хочет видеть полный код, но рассмотреть показ сотрудничества где вы пытаетесь использовать привязки клавиш. Это лучший способ узнать, что вы делаете неправильно. Лучше всего опубликовать [sscce] (http://sscce.org). re 'Пожалуйста, не говорите, что эта тема дублируется, потому что предыдущие темы не помогают мне.« Подумайте об избежании принятия условий для ответов, которые мы можем дать. В конце концов, мы все добровольцы; вы не платите нам. Вместо этого сообщите нам, как насчет привязки клавиш смущает вас, и покажите это с помощью вашего кода. –

+0

Я использовал этот код: cor.getInputMap(). Put (KeyStroke.getKeyStroke («F2»), «none»); – LoL

+0

Покажите свой вопрос выше, а не в комментариях. Также покажите, как вы используете ActionMap. Разумеется, решение должно правильно использовать привязки клавиш. Никто не захочет повторно написать учебник для вас, поэтому, чтобы получить конкретную помощь, вы захотите показать больше кода (как редактирование вашего вопроса). –

ответ

2

Вы просто должны изменить свойство JButton, чтобы получить короткий путь (в данном примере, ALT + C)

cor.setMnemonic(KeyEvent.VK_C); 

Ваш код будет выглядеть следующим образом:

JButton cor =new JButton(); 
    cor.setText("Coor"); 
    cor.setMnemonic(KeyEvent.VK_C); 
    mainframe.add(cor); 
    window.getContentPane().add(mainframe); 
    window.pack(); 
    window.setVisible(true); 

Вы также получите дополнительную информацию, буква «C» в названии Button подчеркнута, показывая пользователю помощь.

+0

Большое спасибо !!!!! – LoL

2

Я не уверен, что это причина вашей проблемы, но из вашего примера я вижу, что в getInputMap вы связываете ключ с именем действия, но вы забыли использовать getActionMap, чтобы связать имя действия с реальным объектом действия как

cor.getActionMap().put("act", act); 

также обрешетке Ctrl + вы можете использовать

cor.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(
       KeyStroke.getKeyStroke('A',InputEvent.CTRL_DOWN_MASK), "act"); 
Смежные вопросы