import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class NoticeIcon extends JFrame{
JMenuBar mbrMain;
JMenu mnuFile;
JMenuItem mnuFileExit;
MenuItem popShow,popExit;
PopupMenu popIcon;
SystemTray tray;
TrayIcon trayIcon;
public NoticeIcon(){
setSize(400,300);
setLocationRelativeTo(null);
mnuFileExit=new JMenuItem("退出");
mnuFile=new JMenu("文件");
mnuFile.add(mnuFileExit);
mbrMain=new JMenuBar();
mbrMain.add(mnuFile);
setJMenuBar(mbrMain);
mnuFileExit.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
tray.remove(trayIcon);
dispose();
}
});
}
public static void main(String[] args){
final NoticeIcon noticeIcon=new NoticeIcon();
noticeIcon.popShow=new MenuItem("显示");
noticeIcon.popExit=new MenuItem("退出");
noticeIcon.popIcon=new PopupMenu();
noticeIcon.popIcon.add(noticeIcon.popShow);
noticeIcon.popIcon.addSeparator();
noticeIcon.popIcon.add(noticeIcon.popExit);
noticeIcon.popExit.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
noticeIcon.tray.remove(noticeIcon.trayIcon);
System.exit(0);
}
});
noticeIcon.popShow.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
noticeIcon.setVisible(true);
}
});
noticeIcon.trayIcon=new TrayIcon(Toolkit.getDefaultToolkit().getImage("Save.gif"),"我的系统通知区图标",noticeIcon.popIcon);
noticeIcon.tray=SystemTray.getSystemTray();
try{
noticeIcon.tray.add(noticeIcon.trayIcon);
}
catch(AWTException ex){
System.out.println("系统托盘不可用");
}
}
}
当然可以。
不过你的窗体可以继承 JDialog 不要继承JFrame
然后把窗口设为模态窗口,试一下。
其实我曾经写过一个继承JFrame的也能达到你要的那个效果,不过那种写法很少用,已经是三四年前的事情,我都不记得是怎么写的了。
大概思路:更改JFrame的窗口样式。
jdk1.6应该可以做到的
SystemTray?类似这样一个名字的类
jdk1.6
java.awt.SystemTray