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

}

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值