2017-09-10 7 views
0

해결할 수없는 프로그램에 문제가 있습니다. 나는 몇 시간 동안 노력 중이며 google 등을 시도했다. 나는 작동하는 많은 프로그램을 보았지만 내 솔루션이 왜 그런지 모르겠다. 내 목표 (현재)는 간단합니다. 마우스 클릭이나 키 누르기를 할 때 cmd 행에 쓰고 싶습니다. 첫 번째는 작동하지만 두 번째는 작동하지 않습니다. 아무도 내 이유를 말할 수 있습니까?java eclipse windowbuilder keyPressed 이벤트가 실행되지 않습니다.

import java.awt.EventQueue; 

import javax.swing.JFrame; 
import java.awt.event.KeyAdapter; 
import java.awt.event.KeyEvent; 
import java.awt.event.MouseAdapter; 
import java.awt.event.MouseEvent; 

public class test { 

    private JFrame frame; 

    public static void main(String[] args) { 
     EventQueue.invokeLater(new Runnable() { 
      public void run() { 
       try { 
        test window = new test(); 
        window.frame.setVisible(true); 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 
      } 
     }); 
    } 

    public test() { 
     initialize(); 
    } 

    private void initialize() { 
     frame = new JFrame(); 
     frame.getContentPane().addMouseListener(new MouseAdapter() { 
      @Override 
      public void mouseClicked(MouseEvent arg0) { 
       System.out.println("Mouse has clicked!"); 
      } 
     }); 
     frame.getContentPane().addKeyListener(new KeyAdapter() { 
      @Override 
      public void keyPressed(KeyEvent arg0) { 
       System.out.println("A key has pressed."); 
      } 
     }); 
     frame.setBounds(100, 100, 450, 300); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    } 

} 
+3

1) Swing의 경우 일반적으로 [키 바인딩] (https://docs.oracle.com/)을 사용합니다. com/javase/tutorial/uiswing/misc/keybinding.html)를 사용하는 것이 좋습니다. 2) * "몇 시간 동안 노력 중이며 Google 등을 시도했습니다 ... 작동하는 많은 프로그램을 보았습니다. 그러나 왜 내 솔루션이 그러한지 모릅니다."* 이해하는데 어려움이 있습니다. 왜 시도한 '많은 프로그램'에서 문제의 구성 요소가 집중력이 있어야하고 주요 청취자가 작동하도록 입력 포커스가 있어야한다는 것을 알지 못했습니다. (이것은 키 바인딩이 해결할 수있는 문제 중 하나입니다!) –

+0

'frame.add ... Listener (...)'대신'frame.getContentPane(). add ... Listener (...)'? – howlger

답변

-1

글쎄, 마침내 나는 해결책을 찾으려고 노력하는 데 충분한 시간을 보냈지 만 지금은 그것을 발견했다. 그 이유는 모르지만 JFrame에 keyListener를 추가 할 수는 없습니다. 나는 단지 JButton이나 JTextField 등을 추가 할 수 있습니다. 이것은 조금 이상합니다. :

+0

* "왜 그런지 모르지만 JFrame에 keyListener를 추가 할 수 없습니다 .JButton 또는 JTextField 등을 추가 할 수 있습니다 ... 이것은 나에게 이상합니다." 2 일 전부터 내 의견을 읽고 이해한다면. –

관련 문제