2013-10-25 3 views
1

저는 집중하지 않고 키 입력을 받기위한 자바 프로그램을 만들고 싶었고 내 프로젝트를위한 keyevent 클래스 객체없이 .. 이렇게 할 수있는 방법은 무엇입니까? ??초점을 맞추지 않고 java에서 키 입력을받을 수 있습니까?

나는 이것을 시도했지만 그것은 나의 요구 사항을 충족시키지 못했다!

import java.awt.Container; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.awt.event.KeyEvent; 
import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.JTextField; 
import javax.swing.KeyStroke; 
import javax.swing.text.Keymap; 

public class key1 { 

    private static void showUI() { 
     JFrame jFrame = new JFrame(""); 
     jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     Container container = jFrame.getContentPane(); 
     JTextField txt = new JTextField(); 
     container.add(txt, BorderLayout.NORTH); 
     ActionListener actListener = new ActionListener() { 
      @Override 
      public void actionPerformed(ActionEvent event) { 
       System.out.println(event.getActionCommand() + " selected"); 
      } 
     }; 
     JPanel jPane = new JPanel(); 
     JButton defaultButton = new JButton("Hit Enter"); 
     defaultButton.addActionListener(actListener); 
     jPane.add(defaultButton); 
     JButton otherButton = new JButton("Onother Button"); 
     otherButton.addActionListener(actListener); 
     jPane.add(otherButton); 
     container.add(jPane, BorderLayout.SOUTH); 
     Keymap map = txt.getKeymap(); 
     KeyStroke stroke = KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0, false); 
     map.removeKeyStrokeBinding(stroke); 
     jFrame.getRootPane().setDefaultButton(defaultButton); 
     jFrame.setSize(350, 250); 
     jFrame.setVisible(true); 
    } 

    public static void main(String args[]) { 
     javax.swing.SwingUtilities.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       showUI(); 
      } 
     }); 
    } 
} 
+0

이 키 바인딩의 JTextField에 추가 된 ActionListener없이 작동하지 않습니다는, 링크에 대한 thnx .. 설명 – mKorbel

답변

1

나는이 level..the 전체의 KeyEvent의 API 일부 Component 가진 초점 :(사실

를 중심으로 돌아 가지 스윙 가능합니다 생각하지 않는다, 나는 JVM은 이벤트를 생성 확신 OS가 무엇인가에 초점이있는 경우에만 해당 이벤트를 얻을 수 있습니다 렀지 할 수 있습니다 무엇을 기반으로. 그러나

, 당신이 원하는 것을 할 수있는 라이브러리를 발견했습니다. 내가 사용한 적이 그것도 .. 호기심을 보았다.

이유는 당신의 JTextField에서 키 바인딩 BUILT_IN로 입력 제거 이유를

http://code.google.com/p/jnativehook/

+0

정확히없이 어떤 이유를 그리워 ... – anookha

관련 문제