这是我的主课
package Apocalypse;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Main extends JFrame{
private int xSize, ySize;
public Main(){
super("Zombie Apocalypse");
Toolkit tk = Toolkit.getDefaultToolkit();
xSize = (int) tk.getScreenSize().getWidth();
ySize = (int) tk.getScreenSize().getHeight();
setSize(xSize,ySize);
setUndecorated(true);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
KeyboardFocusManager kfm = KeyboardFocusManager.getCurrentKeyboardFocusManager();
kfm.addKeyEventDispatcher(new MyDispatcher());
add(new Level1());
setVisible(true);
}
public static void main(String[] args){
new Main();
}
private class MyDispatcher implements KeyEventDispatcher{
public boolean dispatchKeyEvent(KeyEvent e){
if(e.getID() == KeyEvent.KEY_PRESSED){
if(e.getKeyCode() == KeyEvent.VK_ESCAPE){
System.out.println("It Worked");
setUndecorated(false);
}
}
return false;
}
}
}
正如您在我的 KeyEventDispatcher 类中看到的,我想将 Undecorated 设置为 false,这样您就可以关闭游戏,但它不起作用。我该怎么做?
最佳答案
一旦显示框架,您就无法将其装饰更改为 setUndecorated()在这种情况下会抛出IllegalComponentStateException
。要解决此问题,您可以创建新的装饰框架,将内容移至其中并处理旧框架。
关于java - 使用 KeyEventDispatcher 设置 jframe 大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16201126/