Java如何使窗口最小化为图标

Python017

Java如何使窗口最小化为图标,第1张

最小化时隐藏,在图标上点右右键选择显示窗口时,让窗口显示出来 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   此状态位掩码指示将窗体完全最大化(水平和垂直方向)。