【问题标题】:Making a window resizable in Java using KeyEvent使用 KeyEvent 在 Java 中调整窗口大小
【发布时间】:2014-05-24 21:56:29
【问题描述】:

自从我上次使用 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);
    }
   }
}

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

【问题讨论】:

  • 1) 你永远不会向组件添加 KeyListener,所以它不可能工作,2) 你甚至不应该使用 KeyListener。最好按照 MadProgrammer (1+) 使用键绑定。最重要的是,您正在尝试同时解决两个问题,这就是为什么您不会通过谷歌搜索找到解决方案的原因。而是单独解决问题 -- 1) 在 Swing GUI 中获得击键和 2) 将 GUI 从窗口更改为完整并返回。
  • 就像我说的,我已经有一段时间没有编程了,我正在为大学做这件事。我有点从以前尝试重新学习的项目中来回切换。

标签: java swing resize window toggle


【解决方案1】:

首先,看看the key bindings API,这将使您能够更好地控制生成关键事件所需的焦点级别。

其次,看看JFrame#setExtendedState,它可以让你以独立于平台的方式控制窗口的大小状态

【讨论】:

  • +1 用于键绑定。您可能希望将键绑定添加到框架的root pane。您可以使用frame.getRootPane() 访问根窗格。
【解决方案2】:

您不能在 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
        }
    }

【讨论】:

    猜你喜欢
    • 2015-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-02
    • 1970-01-01
    • 2021-09-20
    • 1970-01-01
    • 2016-04-07
    相关资源
    最近更新 更多