【问题标题】:how to minimize and maximize JFrame in java using mouse and key Listener?java - 如何使用鼠标和按键监听器最小化和最大化Java中的JFrame?
【发布时间】:2014-04-16 13:16:01
【问题描述】:

我想在使用“mouseClicked”单击框架时最小化框架,并在使用“keyPressed”按下“n”字符时最大化,这是代码正在运行,但我认为没有做任何事情。

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

   }
}

感谢您的帮助。

【问题讨论】:

  • 对于 Swing,通常在基于 AWT 的较低级别 KeyListener 上使用键绑定。有关如何使用它们的详细信息,请参阅How to Use Key Bindings
  • 而 JFrame 默认是不可聚焦的容器,需要 KeyListener 焦点,可聚焦的 JComponents

标签: java swing jframe keylistener mouselistener


【解决方案1】:

“我想在使用“mouseClicked”单击框架时最小化框架

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

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

“并在我使用“keyPressed”按“n”字符时最大化

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

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

【讨论】:

  • 感谢您的建议,好的,我会这样做,感谢您的回答,您是对的,我不会在框架中添加面板再次感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-02-09
  • 1970-01-01
  • 2013-03-17
  • 1970-01-01
  • 1970-01-01
  • 2012-02-24
  • 1970-01-01
相关资源
最近更新 更多