`
sun4love
  • 浏览: 227458 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

swing托盘图标、frame居中显示

阅读更多

 

 

main class

 

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GraphicsConfiguration;
import java.awt.HeadlessException;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.WindowEvent;
import java.io.IOException;

import javax.swing.JFrame;
import javax.swing.JOptionPane;

public class AstCenterBootstrap extends JFrame {
	private static final long serialVersionUID = -5102211705496305088L;

	public AstCenterBootstrap() throws HeadlessException {
		super();
		initComponents();
	}

	public AstCenterBootstrap(GraphicsConfiguration gc) {
		super(gc);
		initComponents();
	}

	public AstCenterBootstrap(String title, GraphicsConfiguration gc) {
		super(title, gc);
		initComponents();
	}

	public AstCenterBootstrap(String title) throws HeadlessException {
		super(title);
		initComponents();
	}

	public void initComponents() {
		setBackground(Color.lightGray);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		getContentPane().setLayout(new BorderLayout());
		new AstCenterTrayIcon(this);
		setResizable(false);
		Image image = Toolkit.getDefaultToolkit().getImage(
				this.getClass().getResource("astTray.png"));
		this.setIconImage(image);
	}

	@Override
	protected void processWindowEvent(WindowEvent e) {
		super.processWindowEvent(e);
		if (e.getID() == WindowEvent.WINDOW_CLOSING) {
			int option = JOptionPane.showConfirmDialog(null, "您确认要关闭系统吗?",
					"确认提示", JOptionPane.OK_OPTION | JOptionPane.CANCEL_OPTION);
			if (option != JOptionPane.OK_OPTION) {
				return;
			} else {
			}
		} else if (e.getID() == WindowEvent.WINDOW_ICONIFIED) {//最小化时隐藏iframe,模拟隐藏任务栏图标
			setVisible(false);
		}
	}

	public static void main(String[] args) throws IOException {
		AstCenterBootstrap astCenter = new AstCenterBootstrap("AstCenter系统");
		astCenter.pack();
		Dimension local_size = new Dimension(300, 200);
		astCenter.setSize(local_size);
		astCenter.setLocationRelativeTo(null);
		astCenter.setVisible(true);
	}
}

 

 

tray icon class

 

import java.awt.AWTException;
import java.awt.Frame;
import java.awt.Image;
import java.awt.MenuItem;
import java.awt.PopupMenu;
import java.awt.SystemTray;
import java.awt.Toolkit;
import java.awt.TrayIcon;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowEvent;

import javax.swing.JFrame;

public class AstCenterTrayIcon implements ActionListener {
	private PopupMenu pop;
	private MenuItem open, close;
	private TrayIcon trayicon;
	private JFrame jframe;

	public AstCenterTrayIcon(JFrame jframe) {
		this.jframe = jframe;
		initComponents();
	}

	private void initComponents() {
		pop = new PopupMenu();
		open = new MenuItem("Open");
		open.addActionListener(this);
		close = new MenuItem("Close");
		close.addActionListener(this);
		pop.add(open);
		pop.add(close);
		Image image = Toolkit.getDefaultToolkit().getImage(
				this.getClass().getResource("astTray.png"));
		if (SystemTray.isSupported()) {
			SystemTray tray = SystemTray.getSystemTray();
			trayicon = new TrayIcon(image, "AstCenter系统", pop);
			trayicon.addMouseListener(new MouseAdapter() {
				public void mouseClicked(MouseEvent e) {
					if (e.getClickCount() == 2) {
						showFrame();
					}
				}
			});
			try {
				tray.add(trayicon);
			} catch (AWTException e) {
				e.printStackTrace();
			}

		}
	}

	public void actionPerformed(ActionEvent e) {
		if (e.getSource() == open) {
			showFrame();
		}
		if (e.getSource() == close) {
			jframe.dispatchEvent(new WindowEvent(jframe,
					WindowEvent.WINDOW_CLOSING));
		}
	}
        //状态切换效果
	public void showFrame() {
		jframe.setState(Frame.ICONIFIED);
		jframe.setVisible(true);
		jframe.setState(Frame.NORMAL);
	}

}

 

 

 

 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics