如何使用鼠标和键侦听器最小化和最大化Java中的JFrame?

时间:2014-04-16 13:16:01

标签: java swing jframe keylistener mouselistener

我希望在使用" mouseClicked"点击框架时最小化框架。当我按下' n' char使用" keyPressed"这是代码正在运行,但我认为没有做任何事情。

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Test extends JPanel implements MouseListener,KeyListener {
   static JFrame frame = new JFrame("java lover");

    public Test() {

           super();
           this.addMouseListener(this);
           this.addKeyListener(this);
    }

//************************************************************************************
  public void mouseClicked(MouseEvent e){
     frame.setState(Frame.ICONIFIED);  // to minimize frame

    }
 //************************************************************************************
    public void mouseEntered(MouseEvent e){
    }
    public void mouseExited(MouseEvent e){
    }
    public void mousePressed(MouseEvent e){
    }
    public void mouseReleased(MouseEvent e){
    }
 //*************key*********************************
  public void keyTyped(KeyEvent e) {
     }
  //*************key*********************************************************************
     public void keyPressed(KeyEvent e) {
         if(e.getKeyChar()=='n'){
              frame.setState ( Frame.NORMAL );// for maximize or normal frame
             }
    }
 //*************key**********************************************************************
     public void keyReleased(KeyEvent e) {
    }
//**************************************************

   public static void main(String[] args) {
          Test panel=new Test();
               frame.setSize(600, 600);
               frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

   }
}

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

  

“我想在使用”mouseClicked“

点击框架时最小化框架

您永远不会将Test panel添加到框架中。该面板具有鼠标监听器

Test panel=new Test();
frame.add(panel);

  

“并在使用”keyPressed“按下'n'char时最大化

我认为这是不可能的。一旦框架最小化,应用程序就不再聚焦,并且关键事件将转移到聚焦应用程序或系统。如果需要,Windows-> Tab等系统键可以导航回您的应用程序(在Windows中)。

但也许更好的问题是“你为什么要那样做”?想象一下,您最小化您的应用程序,然后开始处理需要键入的另一个应用程序,并键入“n”。您的其他应用程序将自动打开,当尝试在SO上发布回答问题时会非常烦人。我必须限制我不使用字母n :-)

的答案