以下是一個顯示黑屏的程序ALARM!:爲什麼按下的鍵不會觸發任何事件?
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class displayFullScreen extends Window {
private JLabel alarmMessage = new JLabel("Alarm !");
public displayFullScreen() {
super(new JFrame());
setLayout(new FlowLayout(FlowLayout.CENTER));
alarmMessage.setFont(new Font("Cambria",Font.BOLD,100));
alarmMessage.setForeground(Color.CYAN);
add(alarmMessage);
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
setBounds(0,0,screenSize.width,screenSize.height);
setBackground(Color.black);
addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent ke) {
escapeHandler(ke);
}
});
}
public void escapeHandler(KeyEvent ke) {
if(ke.getKeyCode() == ke.VK_ESCAPE) {
System.out.println("escaped !");
} else {
System.out.println("Not escaped !");
}
}
public static void main(String args[]) {
new displayFullScreen().setVisible(true);
}
}
我在這個程序中設置了一個按鍵處理程序。處理程序捕獲焦點在窗口上時按下的鍵。 當按下退出鍵時escaped !
應顯示爲!escaped
。 但是當我按下某個鍵時,什麼都不顯示。問題是什麼 ?
另一種方法是將偵聽器添加到每個組件,這個類似問題的解決方案如下所示:http://stackoverflow.com/questions/286727/ java-keylistener-for-jframe-is-being-responsive –
@ChipMcCormick,不,這不是一個好的解決方案。正如我已經指出,不應該使用KeyListener。 Swing被設計爲與鍵綁定一起使用。 – camickr