2014-05-24 37 views
0

自从我上次使用Java编程以来,我已经有一段时间了,而且我不幸遗忘了我所知道的所有东西......只是让你知道,我做了Google搜索,找不到任何东西我需要解决这个问题。我想让我的窗口在全屏幕和窗口之间切换。这里是我的代码...使用KeyEvent制作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); 
    } 
    } 
} 

这使得窗口,但我不能让它改变窗口的大小,我已导入事件库对于那些你想知道。非常感谢帮助。

+0

1)你从来没有一个KeyListener的添加的成分,所以没有办法,它可以工作,2)你甚至不应该使用的KeyListener。按照MadProgrammer(1+)更好地使用键绑定。最重要的是,您试图同时解决两个问题,这就是为什么您不会通过Google搜索找到解决方案。而是单独解决问题 - 1)在Swing GUI中获取关键笔划和2)将GUI从窗口更改为完整和后退。 –

+0

就像我说过的那样,自从我编程以来,我已经有一段时间了,我正在为大学而努力。我有点从以前试图重新学习它的项目中来回切换。 – Garrett

回答

2

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

其次,看看JFrame#setExtendedState,这将让你在一个平台独立的方式控制,窗口

+0

+1键绑定。您可能需要将Key Bindings添加到框架的“根窗格”中。你可以使用'frame.getRootPane()'来访问根窗格。 – camickr

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