2010-03-10 10 views
6

बनाने के लिए निम्नलिखित कार्यक्रम में, क्यों एक कुंजी प्रिंट मार करता है "हैलो दुनिया" CTRL + एक मार जबकि नहीं करता है?जावा घुमाओ कीस्ट्रोक्स: कैसे CTRL-संशोधक काम

import java.awt.event.*; 
import javax.swing.*; 

public class KeyStrokeTest { 
    public static void main(String[] args) { 
     JPanel panel = new JPanel(); 

     /* add a new action named "foo" to the panel's action map */ 
     panel.getActionMap().put("foo", new AbstractAction() { 
       public void actionPerformed(ActionEvent e) { 
        System.out.println("hello, world"); 
       } 
      }); 

     /* connect two keystrokes with the newly created "foo" action: 
      - a 
      - CTRL-a 
     */ 
     InputMap inputMap = panel.getInputMap(); 
     inputMap.put(KeyStroke.getKeyStroke(Character.valueOf('a'), 0), "foo"); 
     inputMap.put(KeyStroke.getKeyStroke(Character.valueOf('a'), InputEvent.CTRL_DOWN_MASK), "foo"); 

     /* display the panel in a frame */ 
     JFrame frame = new JFrame(); 
     frame.getContentPane().add(panel); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setSize(400, 400); 
     frame.setVisible(true); 
    } 
} 

मैं इसे कैसे कि CTRL + एक काम करता है और साथ ही तय कर सकता है?

उत्तर

15

मैं यह आसान उपयोग करने के लिए लगता है:

KeyStroke a = KeyStroke.getKeyStroke("A"); 
KeyStroke controlA = KeyStroke.getKeyStroke("control A"); 

या:

KeyStroke controlA = KeyStroke.getKeyStroke(KeyEvent.VK_A, InputEvent.CTRL_MASK); 
6

Dude, इस

inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_A, InputEvent.CTRL_MASK), "foo"); 
+0

दोस्त, धन्यवाद! आपका समाधान काम करता है, हालांकि मुझे अभी भी आश्चर्य है कि मेरा क्यों नहीं ... – Thomas

+0

दिलचस्प मैंने इस पोस्टिंग से पहले अपना सुझाव दिया, साथ ही मैंने आपको अन्य विकल्प दिए जिन्हें आप विभिन्न स्थितियों में उपयोग करने में सक्षम हो सकते हैं। मुझे लगता है कि अगली बार मैं सभी परेशानी नहीं जाऊंगा। – camickr

+1

@ थॉमस: मुझे नहीं पता कि मैं सही हूं या नहीं, लेकिन कारण यह है कि आपका कोड काम नहीं कर सकता है क्योंकि पहले मामले में, आप एक साधारण चरित्र 'ए' का जिक्र कर रहे थे। दूसरे मामले में आप कुंजी के संयोजन का जिक्र कर रहे हैं जो एक ASCII और स्कैन मान (Ctrl कुंजी) है। मुझे लगता है कि यह घटनाओं से ठीक से जुड़ा होना चाहिए था। – bragboy

-1

हां उपयोग करते हैं, इसके बाद के संस्करण कोड काम करेंगे।

बिग चित्र - Ctrl एक और एक के रूप में विभिन्न कीस्ट्रोक्स एक और के रूप में ही पढ़ रहे हैं अलग होगा +।

+5

ओपी जानता है कि "Ctrl-A" और "ए" अलग-अलग कीस्ट्रोक हैं। – camickr

संबंधित मुद्दे