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