swing 的托盘和内置图标
swing的托盘和内置图标2010-12-08 21:33package tray;
import java.awt.AWTException; import java.awt.BorderLayout; import java.awt.GridLayout;
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.WindowAdapter; import java.awt.event.WindowEvent; import java.net.URL;
import javax.swing.ImageIcon; import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.WindowConstants;
public class TrayIconTest extends JFrame{ /*
*
*/
private static final long serialVersionUID=1L;
private TrayIcon ti;
public static void main(String args){ TrayIconTest frame=new TrayIconTest();
frame.setTitle("TrayIconTest");
frame.setVisible(true);
frame.setSize(200,65);
frame.setLocation(300,200);
}
String
icons={"/com/sun/java/swing/plaf/motif/icons/DesktopIcon.gif",
"/com/sun/java/swing/plaf/motif/icons/Error.gif",
"/com/sun/java/swing/plaf/motif/icons/Inform.gif",
"/com/sun/java/swing/plaf/motif/icons/Question.gif", "/com/sun/java/swing/plaf/motif/icons/ScrollDownArrow.gif", "/com/sun/java/swing/plaf/motif/icons/ScrollDownArrowActive.gif", "/com/sun/java/swing/plaf/motif/icons/ScrollKnobH.gif", "/com/sun/java/swing/plaf/motif/icons/ScrollLeftArrow.gif", "/com/sun/java/swing/plaf/motif/icons/ScrollLeftArrowActive.gif", "/com/sun/java/swing/plaf/motif/icons/ScrollRightArrow.gif", "/com/sun/java/swing/plaf/motif/icons/ScrollRightArrowActive.gif", "/com/sun/java/swing/plaf/motif/icons/ScrollUpArrow.gif", "/com/sun/java/swing/plaf/motif/icons/ScrollUpArrowActive.gif", "/com/sun/java/swing/plaf/motif/icons/StandardBackground.gif", "/com/sun/java/swing/plaf/motif/icons/TrayBot tom.gif", "/com/sun/java/swing/plaf/motif/icons/TrayLeft.gif", "/com/sun/java/swing/plaf/motif/icons/TrayRight.gif", "/com/sun/java/swing/plaf/motif/icons/TrayTop.gif", "/com/sun/java/swing/plaf/motif/icons/TreeClosed.gif", "/com/sun/java/swing/plaf/motif/icons/TreeOpen.gif", "/com/sun/java/swing/plaf/motif/icons/Warn.gif",
"/com/sun/java/swing/plaf/motif/icons/image-delayed.png", "/com/sun/java/swing/plaf/motif/icons/image-failed.png", "/com/sun/java/swing/plaf/windows/icons/Computer.gif", "/com/sun/java/swing/plaf/windows/icons/DetailsView.gif", "/com/sun/java/swing/plaf/windows/icons/Directory.gif", "/com/sun/java/swing/plaf/windows/icons/Error.gif", "/com/sun/java/swing/plaf/windows/icons/File.gif", "/com/sun/java/swing/plaf/windows/icons/FloppyDrive.gif", "/com/sun/java/swing/plaf/windows/icons/HardDrive.gif", "/com/sun/java/swing/plaf/windows/icons/HomeFolder.gif", "/co m/sun/java/swing/plaf/windows/icons/Inform.gif", "/com/sun/java/swing/plaf/windows/icons/JavaCup32.png", "/com/sun/java/swing/plaf/windows/icons/ListView.gif", "/com/sun/java/swing/plaf/windows/icons/NewFolder.gif", "/com/sun/java/swing/plaf/windows/icons/Question.gif", "/com/sun/java/swing/plaf/windows/icons/StandardBackground.gif", "/com/sun/java/swing/plaf/windows/icons/TreeClosed.gif", "/com/sun/java/swing/plaf/windows/icons/TreeLeaf.gif", "/com/sun/java/swing/plaf/windows/icons/TreeOpen.gif",
"/com/sun/java/swing/plaf/windows/icons/UpFolder.gif", "/com/sun/java/swing/plaf/windows/icons/Warn.gif", "/com/sun/java/swing/plaf/windows/icons/image-delayed.png", "/com/sun/java/swing/plaf/windows/icons/image-failed.png", "/javax/swing/plaf/basic/icons/JavaCup16.png", "/javax/swing/plaf/basic/icons/image-delayed.png", "/javax/swing/plaf/basic/icons/image-failed.png", "/javax/swing/plaf/m etal/icons/Error.gif",
"/javax/swing/plaf/metal/icons/Inform.gif",
"/javax/swing/plaf/metal/icons/Question.gif", "/javax/swing/plaf/metal/icons/Warn.gif",
"/javax/swing/plaf/metal/icons/ocean/close-pressed.gif", "/javax/swing/plaf/metal/icons/ocean/close.gif", "/javax/swing/plaf/metal/icons/ocean/collapsed-rtl.gif", "/javax/swing/plaf/metal/icons/ocean/collapsed.gif", "/javax/swing/plaf/metal/icons/ocean/computer.gif", "/javax/swing/plaf/metal/icons/ocean/directory.gif", "/javax/swing/plaf/metal/icons/ocean/error.png", "/javax/swing/plaf/metal/icons/ocean/expanded.gif",
"/javax/swing/plaf/metal/icons/ocean/file.gif", "/javax/swing/plaf/metal/icons/ocean/floppy.gif", "/javax/swing/plaf/metal/icons/ocean/hardDrive.gif", "/javax/swing/plaf/metal/icons/ocean/homeFolder.gif", "/javax/swing/plaf/metal/icons/ocean/iconify-pressed.gif", "/javax/swing/plaf/metal/icons/ocean/iconify.gi f", "/javax/swing/plaf/metal/icons/ocean/info.png", "/javax/swing/plaf/metal/icons/ocean/maximize-pressed.gif", "/javax/swing/plaf/metal/icons/ocean/maximize.gif", "/javax/swing/plaf/metal/icons/ocean/menu.gif", "/javax/swing/plaf/metal/icons/ocean/minimize-pressed.gif", "/javax/swing/plaf/metal/icons/ocean/minimize.gif", "/javax/swing/plaf/metal/icons/ocean/newFolder.gif", "/javax/swing/plaf/metal/icons/ocean/paletteClose-pressed.gif", "/javax/swing/plaf/metal/icons/ocean/paletteClose.gif", "/javax/swing/plaf/metal/icons/ocean/question.png", "/javax/swing/plaf/metal/icons/ocean/upFolder.gif", "/javax/swing/plaf/metal/icons/ocean/warning.png", "/javax/swing/plaf/metal/icons/sortDown.png",
"/javax/swing/plaf/metal/icons/sortUp.png", "/sun/print/resources/duplex.png",
"/sun/print/resources/oneside.png", "/sun/print/resources/orientLandscape.png", "/sun/print/resources/o rientPortrait.png", "/sun/print/resources/orientRevLandscape.png", "/sun/print/resources/orientRevPortrait.png", "/sun/print/resources/tumble.png",};
public TrayIconTest(){
setDefaultCloseOperation(WindowConstants.HIDE_ON_CLOSE);
this.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ if(SystemTray.isSupported()){
setVisible(false);
minimizeToTray();
}else{
System.exit(0);
}
}
});
JPanel root=new JPanel();
JButton exitButton=new JButton("Exit");
exitButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
System.exit(0);
}
});
root.add(exitButton);
getContentPane().add(root,BorderLayout.NORTH); JPanel iconsPanel=new JPanel();
iconsPanel.setLayout(new GridLayout(icons.length/5+1,5)); for(int i=0;i icons.length;i++){
JPanel imgPanel=new JPanel();
imgPanel.setLayout(new GridLayout(2,1));
URL url=Object.class.getResource(icons[i]);
Image image=Toolkit.getDefaultToolkit().getImage(url); ImageIcon ic=new ImageIcon(image);
JLabel imgLabel=new JLabel(ic);
JTextField text=new JTextField(icons[i]);
text.setEditable(false);
imgPanel.add(text);
imgPanel.add(imgLabel);
iconsPanel.add(imgPanel);
}
System.out.println(icons.length+""+(18*5)); add(iconsPanel);
pack();
initTi();
}
private void initTi(){ URL
url=this.getClass().getResource("/com/sun/java/swing/plaf/motif/icons
/TrayBottom.gif");
Image image=Toolkit.getDefaultToolkit().getImage(url); PopupMenu popupTi=new PopupMenu();
MenuItem showItem=new MenuItem("Show");
ActionListener showListener=new ActionListener(){
public void actionPerformed(ActionEvent e){
setVisible(true);
SystemTray.getSystemTray().remove(ti); }
; }
showItem.addActionListener(showListener); popupTi.add(showItem);
ti=new TrayIcon(image,"TrayIcon",popupTi); ti.addActionListener(showListener); }
public void minimizeToTray(){
SystemTray tray=SystemTray.getSystemTray(); try{
tray.add(ti);
}catch(AWTException e){ e.printStackTrace();
}
}
}