【发布时间】:2019-03-13 08:36:11
【问题描述】:
每次我运行我的应用程序时,KeyListener 是否能正常工作都是一个问题。如果它可以运行,那么之后的任何时候都不会出现任何问题,但如果它在应用程序启动时无法运行,则它永远不会运行,直到程序关闭并重新启动。
public ThreeDimChessRunner() {
record = new ArrayList<Integer>();
winner = Player.NONE;
game = new ThreeDimBoard(0);
addMouseListener(this);
addKeyListener(this);
setFocusable(true);
tm.start();
screenWidth = screenSize.width;
screenHeight = screenSize.height;
}
public static void main(String[] args){
screenSize = Toolkit.getDefaultToolkit().getScreenSize();
ThreeDimChessRunner p = new ThreeDimChessRunner();
JFrame frame = new JFrame("3D Chess");
frame.setExtendedState(Frame.MAXIMIZED_BOTH);
frame.setUndecorated(true);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(p);
}
ThreeDimChessRunner 类扩展 JPanel 并实现 KeyListener、ActionListener 和 MouseInputListener。
tm 是一个Timer 对象
screenSize 是一个Dimension 对象
【问题讨论】:
-
JFrame 是否无响应?可能是主线程工作量太大
标签: java swing jframe jpanel keylistener