以下是一个显示黑屏的程序 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
。
但是当我按下一个键时,什么都没有显示出来。问题是什么 ?
答案 0 :(得分:4)
也许你想要一个窗口但是你有两个问题:
所以你应该使用JFrame。如果您不想要标题栏和边框,则可以使用未修饰的JFrame。
此外,您不应该使用KeyListener,因为即使在JFrame键上,事件也只会被调度到焦点组件。相反,您应该使用Key Bindings。在这种情况下,您似乎应该将绑定添加到框架的根窗格。
答案 1 :(得分:1)
改为扩展JFrame并摆脱超级调用。