使用KeyEvent在Java中使窗口可调整大小

使用KeyEvent在Java中使窗口可调整大小,java,swing,resize,window,toggle,Java,Swing,Resize,Window,Toggle,自从我上次用Java编程已经有一段时间了,不幸的是我几乎忘记了我知道的一切……正如你所知,我在谷歌上搜索了一下,找不到解决这个问题所需要的任何东西。我想让我的窗口在全屏和窗口之间切换。这是我的密码 public class Window extends JFrame implements KeyListener{ ImageIcon i= new ImageIcon("icon.png"); Image ico=i.getImage(); public void creat

自从我上次用Java编程已经有一段时间了,不幸的是我几乎忘记了我知道的一切……正如你所知,我在谷歌上搜索了一下,找不到解决这个问题所需要的任何东西。我想让我的窗口在全屏和窗口之间切换。这是我的密码

public class Window extends JFrame implements KeyListener{

   ImageIcon i= new ImageIcon("icon.png");
   Image ico=i.getImage();

   public void create(){
    this.setSize(800,600);
    this.setVisible(true);
    this.setFocusable(true);
    this.setIconImage(ico);
    this.setLocationRelativeTo(null);
    this.setResizable(false);
    this.setTitle("MYTITLE");
   }

   public void keyPressed(KeyEvent e) {
   }

   public void keyReleased(KeyEvent e) {
   }

   public void keyTyped(KeyEvent e){
    if (e.getKeyChar()==KeyEvent.VK_F1){
        this.setSize(1280,1024);
        this.setUndecorated(true);
    }else{
        this.setSize(800,600);
    }
   }
}
它创建了一个窗口,但我无法让它调整窗口的大小,我已经为您导入了事件库。非常感谢您的帮助。

首先,请看一下,这将使您能够更好地控制生成关键事件所需的焦点级别


其次,看一看,这将允许您以独立于平台的方式控制窗口的大小状态

您不能在keyTyped中使用e.getKeyChar。它什么也不返回。要么将进程切换到按键方法,要么执行类似操作

ArrayList<Integer> keysDown = new ArrayList<>();
    public void keyPressed(KeyEvent e) {
        keysDown.add(e.getKeyCode());
    }

    public void keyReleased(KeyEvent e) {
        keysDown.remove(keysDown.indexOf(e.getKeyCode()));
    }

    public void keyTyped(KeyEvent e) {
        if(keysDown.contains(KeyEvent.VK_F1)) {
            //Do Something
        }
    }
ArrayList keysDown=new ArrayList();
按下公共无效键(按键事件e){
添加(例如getKeyCode());
}
公共无效密钥已释放(密钥事件e){
remove(keysDown.indexOf(e.getKeyCode());
}
public void keyTyped(KeyEvent e){
if(keysDown.contains(KeyEvent.VK_F1)){
//做点什么
}
}

+1用于键绑定。您可能需要将键绑定添加到框架的
根窗格中。您可以使用
frame.getRootPane()
访问根窗格。1)您从未向组件添加KeyListener,因此它无法工作;2)您甚至不应该使用KeyListener。最好按照MadProgrammer(1+)使用密钥绑定。最重要的是,你试图同时解决两个问题,这就是为什么你不能通过谷歌搜索找到解决方案。相反,要单独解决这些问题——1)在Swing GUI中获得按键,2)将GUI从窗口更改为全屏幕和背面。正如我所说,我编程已经有一段时间了,我正在为大学做这件事。我有点来回切换,从以前的项目,我曾试图重新学习它。