1、正在组件上方便的显现图象是 swing 比 AWT 优越的特之一 正在 swing 中,frame, button, lable 等组件都可超卓的用图象来加强它的外瞧,以 button 为例,卖建立一 个 button 东西的时分一般是这样的: JButton button = new JButton("Click me"); 这样就建立了一个 button 东西,上面显现的文字是 Click me. 如今我们来稍做变动: ImageIcon buttonIcon = new ImageIcon("button.gif", "a background of button");
2、 JButton button = new JButton(buttonIcon); 这两行代就达到了手法,正在 button 上显现了图象 button.gif,注重我们用的是 ImageIcon 类,而 不是 Image 类。ImageIcon 中的第二个参数是对 ImageIcon 东西的描绘,这个参数卖前可能会被 assistive 技术用到。 假如想正在 button 上同时显现文字和图象,还可以这样: JButton button = new JButton("Click me", buttonIcon); 另外,还可以界说图象正在 组件上的地位,如: JBu
3、tton button = new JButton("Click me", buttonIcon, JButton.CENTER); 最后,正在特另外讲一下如何改变你的 applet/application 窗口图标, 正在 applet中,界说了一个image东西后就可以直接以它为参数来使用 setIconImage() 要领了. 正在applaction中,Frame东西也可以使用setIconImage(Image image)要领设置窗口左上角的图标,Java窗口默许图标为一个咖啡杯,图像不支撑Icon等图标式样。 例: import java.awt.*; impor
4、t java.awt.event.*; public class Frame_Icon{ public static void main(String args[]){ Frame frame=new Frame("设置Java窗口的图标"); Toolkit tool=frame.getToolkit(); //得到一个Toolkit东西 Image myimage=tool.getImage("xueren.gif"); //由tool获取图像 frame.setIconImage(myimage); frame.setSize(400,300); frame.setVi
5、sible(true); frame.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0); } }); } } java 最小化到系统托盘 2010-09-06 15:32 package test; import java.awt.AWTException; import java.awt.Image; import java.awt.MenuItem; import java.awt.PopupMenu; import
6、 java.awt.SystemTray; 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.WindowAdapter; import java.awt.event.WindowEvent; import javax.swing.ImageIcon;
7、 import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.SwingUtilities; public class MyTray { TrayIcon trayIcon;//托盘图标,但不是Image类型的 哦 SystemTray Tray;//系统托盘 Image img=(new ImageIcon("images/icon.png")).getImage();//托盘图标,建议使用较小的图片 public MyTray(){ final JFrame frame=new JFra
8、me(); JPanel jp=new JPanel(); frame.add(jp); frame.setSize(320,240); frame.setLocationRelativeTo(null); frame.setResizable(false); frame.setIconImage(img);//设置窗口左上角的图标 frame.setVisible(true); Tray=SystemTray.getSystemTray();//获得系统托盘实例 //创建系统托盘的右键弹出菜单 PopupMenu
9、 pm=new PopupMenu(); MenuItem mi0=new MenuItem("Open"); MenuItem mi1=new MenuItem("Close"); pm.add(mi0); pm.add(mi1); trayIcon=new TrayIcon(img,"",pm);//创建托盘图标实例 trayIcon.setImageAutoSize(true);//图标自动适应托盘,也就是说它自动改变大小 trayIcon.setToolTip(" ");//设置提示语 //添加系统托盘
10、图标 frame.addWindowListener(new WindowAdapter() {//当“关闭”窗口时,最小化到系统托盘 public void windowClosing(WindowEvent e) { try { Tray.add(trayIcon); } catch (AWTException exc) { exc.printStackTrace(); } }}); mi0.addActionListener(new ActionListener(
11、){ //右键弹出菜单的事件监听 public void actionPerformed(ActionEvent e) { frame.setExtendedState(JFrame.NORMAL); frame.setVisible(true); Tray.remove(trayIcon); } }); mi1.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { S
12、ystem.exit(0); Tray.remove(trayIcon);//退出程序,移出系统托盘处的图标 } }); trayIcon.addMouseListener(new MouseAdapter(){//单击鼠标左键,也是显示窗口 public void mouseClicked(MouseEvent e){ if(SwingUtilities.isLeftMouseButton(e)){//如果点击的是鼠标左键 frame.setExtendedState(JFrame.NORMAL); frame.setVisible(true); Tray.remove(trayIcon); } } }); } public static void main(String[] args){ if (SystemTray.isSupported()) { // 如果操作系统支持托盘,那么就创建MyTray的实例 new MyTray(); } } }






