java - 使用 KeyEventDispatcher 设置 jframe 大小

标签 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.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/

相关文章:

java - 如何使用注释为 spring 设置 context.xml?

java - 如何合并2个ByteBuf?

java - JPanel 上的 paintComponent 不工作

java - ActionListener 和 Thread.sleep

objective-c - 根据字体/大小更改 NSTextField 的高度

java - 是否有可能在 JodaTime 中将星期几作为仅具有星期几整数的字符串获取而不创建 DateTime 对象

java - 项目构建错误: Non-resolvable parent POM for

java - Swing 和 Nimbus : Replace background of JPopupMenu (attached to JMenu)

iphone - 如何获取以英寸为单位的UIImage大小或UIImage分辨率?

c++ - QTabWidget 大小取决于当前 Tab