最小化时隐藏,在图标上点右右键选择显示
窗口时,让窗口显示出来 import java.awt.AWTExceptionimport java.awt.Imageimport java.awt.MenuItemimport java.awt.SystemTrayimport java.awt.Toolkitimport java.awt.TrayIconimport java.awt.event.ActionEventimport java.awt.event.ActionListenerimport java.awt.image.BufferedImageimport java.io.Fileimport java.io.IOExceptionimport javax.imageio.ImageIOpublic class SystemTrayTest extends Thread { TrayIcon stSystemTray tray =null//javax.swing.Popup pjava.awt.PopupMenu popupMenuItem mi1,mi2msgbox m=nullpublic void getm(msgbox m){ this.m=m} public void run() { // TODO Auto-generated method stub super.run()if (SystemTray.isSupported()) { // get the SystemTray instance tray = SystemTray.getSystemTray()// load an image String test = System.getProperty("user.dir").replace('\\', '/')BufferedImage src = nulltry { src = ImageIO.read(new File(test + "\\logo.jpg"))} catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace()} // 读入源图像 // Image image = Toolkit.getDefaultToolkit().getImage(test + "\\logo.jpg")// create a action listener to listen for default action executed on // the tray icon popup=new java.awt.PopupMenu()mi1=new MenuItem("显示窗口")mi2=new MenuItem("---")popup.add(mi1)popup.add(mi2)mi1.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub m.setVisible(true)System.out.println("open")} })mi2.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub //System.out.println("close")//System.exit(0)} })st = new TrayIcon(image, "Tray Demo", popup)try { tray.add(st)} catch (AWTException e) { e.printStackTrace()} } } public static void main(String[] args) { new SystemTrayTest().start()} } //使窗口
最小化,并隐藏 public void windowIconified(WindowEvent e) { System.out.print("sssssss")jf.setVisible(false)System.out.print(""+e+" "+e.getClass()+" "+e.getNewState())}责任编辑:小草1. 首先做一个你想最小化的窗口List,将所有你想最小化的窗口都放进去。
2. 然后新建一个类或匿名类,随意,extends WindowAdapter , 然后Override它的
public void windowIconified(WindowEvent e)方法,用来监听窗口的最小化事件。
即:将步骤1的List里的所有窗口都最小化:
for(JFrame jf : frameList){
jf.setState(Frame.ICONIFIED)
}
3. 最后对你的登录窗口设置windowListend , 即:
loginFrame.addWindowListener(new WindowAdapter(){
@Override
public void windowIconified(WindowEvent e){
for(JFrame jf : frameList){
jf.setState(Frame.ICONIFIED)
}
}
}) //我这里用匿名类实现了(为了方便),你也可以不这么做。
4. 如果你想同样恢复窗口的话,你也可以extends WindowAdapter然后重载
public void windowDeiconified(WindowEvent e)方法,来捕捉登录窗口的恢复窗口事件,
然后对你的所有窗口:frame.setState(Frame.NORMAL),即可!
望楼主采纳!
setExtendedState(JFrame.ICONIFIED)// 最小化程序
setExtendedState(JFrame.NORMAL)// 正常显示
虽然 setState 方法也可以, 但是这个方法以废弃, 所以推荐使用setExtendedState方法
具体的详细资料和其他的取值,可以查看Java API文档,
JFrame.NORMAL 窗体处于 "normal" 状态。此符号常量指定所有状态位均被清除的窗体状态。
JFrame.ICONIFIED 此状态位指示将窗体图标化。
JFrame.MAXIMIZED_HORIZ 此状态位指示在水平方向将窗体最大化。
JFrame.MAXIMIZED_VERT 此状态位指示在垂直方向将窗体最大化。
JFrame.MAXIMIZED_BOTH 此状态位掩码指示将窗体完全最大化(水平和垂直方向)。