java 改变窗体状态(最大化、最小化、正常)

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Image;
import java.awt.MenuItem;
import java.awt.PopupMenu;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

public class MyFrame extends JFrame implements ActionListener {
 private static final long serialVersionUID = 1026416994451303162L;
 private static MyFrame mf = null;
 JButton jb1 = new JButton("最大化");
 JButton jb2 = new JButton("最小化");
 JButton jb3 = new JButton("正常");

 public static MyFrame getInstance() {
  if (mf == null)
   mf = new MyFrame();
  return mf;
 }

 public MyFrame() {
  super("改变窗体测试");
  init();
  systemTray();
 }

 private void init() {
  this.add(jb1, BorderLayout.NORTH);
  this.add(jb2, BorderLayout.SOUTH);
  this.add(jb3, BorderLayout.CENTER);
  jb1.addActionListener(this);
  jb2.addActionListener(this);
  jb3.addActionListener(this);
  this.setSize(300, 120);
  Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
  int h = (int) d.getHeight() / 4;
  int w = (int) d.getWidth() / 4;
  this.setLocation(w + 150, h + 100);
  this.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
  this.addWindowListener(new WindowAdapter(){
   public void windowClosing(WindowEvent e) {
    MyFrame.getInstance().setVisible(false);
   }
  });
  this.setVisible(true);
 }

 public void actionPerformed(ActionEvent e) {
  String str = e.getActionCommand();
  if (str.equals("最大化")) {
   this.setExtendedState(JFrame.MAXIMIZED_BOTH);
  }
  if (str.equals("最小化")) {
   this.setExtendedState(JFrame.ICONIFIED);
   System.out.println("最小化");
  }
  if (str.equals("正常")) {
   this.setExtendedState(JFrame.NORMAL);
  }
  if(str.equals("m2")){
   this.setExtendedState(JFrame.NORMAL);
  }
 }

 public void systemTray() {
  try {
   if (java.awt.SystemTray.isSupported()) {// 判断当前平台是否支持系统托盘
    java.awt.SystemTray st = java.awt.SystemTray.getSystemTray();
    Image image = Toolkit.getDefaultToolkit().getImage(
      getClass().getResource("0.gif"));// 定义托盘图标的图片
    java.awt.TrayIcon ti = new java.awt.TrayIcon(image);
    ti.setToolTip("改变窗体测试");
    PopupMenu p=new PopupMenu ("OK");
    MenuItem m=new MenuItem("退出");
    m.addActionListener(new ActionListener(){
     public void actionPerformed(ActionEvent e) {
      System.exit(0);
     }
    });
    p.add(m);
    MenuItem m1=new MenuItem("打开");
    m1.addActionListener(new ActionListener(){
     public void actionPerformed(ActionEvent e) {
      MyFrame.getInstance().setVisible(true);
      MyFrame.getInstance().setExtendedState(JFrame.NORMAL);
     }
    });
    p.add(m1);
    MenuItem m2=new MenuItem("最小化");
    m2.addActionListener(new ActionListener(){
     public void actionPerformed(ActionEvent e) {
      MyFrame.getInstance().setVisible(false);
     }
    });
    p.add(m2);
    ti.setPopupMenu(p); // 为托盘添加右键菜单
    st.add(ti);
   }
  } catch (Exception e) {

  }

 }

 public static void main(String[] args) {
  try {
   UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
   MyFrame.getInstance();
  } catch (ClassNotFoundException e) {
   e.printStackTrace();
  } catch (InstantiationException e) {
   e.printStackTrace();
  } catch (IllegalAccessException e) {
   e.printStackTrace();
  } catch (UnsupportedLookAndFeelException e) {
   e.printStackTrace();
  }
 }

}

你可能感兴趣的:(java 改变窗体状态(最大化、最小化、正常))