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

时间:2014-05-24 21:56:29

标签: java swing resize window toggle

自从我上次使用Java编程以来已经有一段时间了,遗憾的是我几乎忘记了我所知道的一切......就这样你知道,我做了Google搜索,找不到我需要的任何问题。我想让我的窗口在全屏和窗口之间切换。这是我的代码......

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);
    }
   }
}

它创建了窗口,但是我无法调整窗口的大小,我已经导入了那些你想知道的事件库。非常感谢帮助。

2 个答案:

答案 0 :(得分:2)

首先,看一下the key bindings API,这样可以更好地控制生成关键事件所需的焦点水平。

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

答案 1 :(得分:-1)

您无法在keyTyped中使用e.getKeyChar。它什么都不返回。将进程转移到keyPressed方法或执行类似这样的操作

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
        }
    }