swing托盘图标、frame居中显示
?
?
main 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);}}?
?
?
?
?
?
?
?
?
?
?
?
?