Java 使用KeyEventDispatcher设置jframe大小
这是我的主课Java 使用KeyEventDispatcher设置jframe大小,java,swing,size,jframe,keyevent,Java,Swing,Size,Jframe,Keyevent,这是我的主课 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.getDef
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,以便您能够关闭游戏,但它不起作用。如何执行此操作?在这种情况下,框架一旦显示,您就无法更改其装饰,因为抛出了
IllegalComponentStateException
。要解决此问题,您可以创建新的装饰框架,将内容移动到其中并处理旧框架