请问java中要使应用程序在桌面托盘区显示应该怎么做 请问java中要使应用程序在桌面托盘区显示应该怎么做??谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 jdic.dev.java.net 下载个 (J)ava (D)esktop (I)ntegrated (C)omponent 类库和几个样例。 本人以前曾经写过,但是需要调用windows本地的dll。如果楼主方便请给我你的地址,我可以寄给你。 请用短信通知,谢谢 SourceForge上有个Systray For Java(systray4j)的项目,好像到2.1版本了,很强,你可以去下载下来,搜索一下肯定能找到。这是我写的一个测试,eclipse.ico是显示在托盘里的图标,16×16package test;import javax.swing.JFrame;import java.awt.event.*;import java.awt.Point;import snoozesoft.systray4j.*;public class SystrayFrame extends JFrame implements SysTrayMenuListener { SysTrayMenuItem activateItem = null; SysTrayMenuItem exitItem = null; CheckableMenuItem alarmItem = null; SysTrayMenu menu = null; Point location = null; public static void main(String[] args) { SystrayFrame frame = new SystrayFrame(); frame.setVisible(true); } public SystrayFrame () { super("Systray Frame Test"); setSize(400, 344); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); addWindowListener(new WindowAdapter() { public void windowIconified(WindowEvent e) { minimizeToSystray(); } }); } public void menuItemSelected(SysTrayMenuEvent e) { if (e.getActionCommand().equals("alarm")) { if (alarmItem.getState()) { } else { } } else if (e.getActionCommand().equals("activate")) { activateWindow(); } else if (e.getActionCommand().equals("exit")) { System.exit(0); } else { } } public void iconLeftClicked(SysTrayMenuEvent e) { } public void iconLeftDoubleClicked(SysTrayMenuEvent e) { activateWindow(); } protected void minimizeToSystray() { location = this.getLocation(); this.dispose(); SysTrayMenuIcon icon = new SysTrayMenuIcon("eclipse.ico"); icon.addSysTrayMenuListener(this); menu = new SysTrayMenu(icon, "Inspirento"); alarmItem = new CheckableMenuItem("Alarm On", "alarm"); activateItem = new SysTrayMenuItem("Activate Main Window", "activate"); exitItem = new SysTrayMenuItem("Exit", "exit"); alarmItem.addSysTrayMenuListener(this); activateItem.addSysTrayMenuListener(this); exitItem.addSysTrayMenuListener(this); menu.addItem(exitItem); menu.addSeparator(); menu.addItem(alarmItem); menu.addItem(activateItem); } protected void activateWindow() { menu.hideIcon(); this.setLocation(location); this.setVisible(true); }} 已经寄了,执行start.bat即可。 JDK 1.6 有了托盘图标的功能下面程序的托盘图标会在5秒后变一下。期待 JDK 1.6正式版尽快发布.....package com.abloger.officemm;import java.awt.*;import java.awt.event.*;import java.awt.image.*;import java.beans.*;public class OfficeMM implements ActionListener { private PopupMenu popup; private MenuItem[] menuItems; private Image imgNormal, imgMail; private TrayIcon trayIcon; public OfficeMM() { if (SystemTray.isSupported ()) { SystemTray tray = SystemTray.getSystemTray (); try { popup = new PopupMenu(); menuItems = new MenuItem[3]; for(int i = 0; i < menuItems.length; i++) { menuItems[i] = new MenuItem(); menuItems[i].addActionListener(this); } menuItems[0].setLabel("Exit"); menuItems[1].setLabel("Config"); menuItems[2].setLabel("Home"); popup.add(menuItems[2]); popup.add(menuItems[1]); popup.addSeparator(); popup.add(menuItems[0]); imgNormal = Toolkit.getDefaultToolkit().getImage("tree.png"); imgMail = Toolkit.getDefaultToolkit().getImage("tree1.png"); trayIcon = new TrayIcon (imgNormal, "System Tray Demo #2", popup); trayIcon.setActionCommand("My Icon"); tray.add(trayIcon); try { Thread.sleep(5000); } catch (Exception e) { } trayIcon.setImage(imgMail); } catch (AWTException e) { System.out.println (e.getMessage ()); return; } } } public static void main (String [] args) { new OfficeMM(); } public void actionPerformed(ActionEvent e) { if (e.getSource() == menuItems[0]) { System.exit(0); } else if (e.getSource() == menuItems[1]) { System.out.println("open"); } }} menu = new SysTrayMenu(icon, "Inspirento"); alarmItem = new CheckableMenuItem("Alarm On", "alarm"); 执行过不去是什么原因? yuanjinming(清醒看程序) 你执行不过去,是因为你没有用JDK1.6系统栏的图标只有JDK1.6才支持 java基础 关于SOCKET通信问题 简单极了:DatagramPacket的小问题 想做一个JAVA简单的计算器 不知道怎么设计布局 List<CardTypeDict> jsdk里有没有将int数高低位交换的函数? 有个程序请教大家一下 是关于考试系统的 怎样编绎运行java代码? 请问标记流的用法和作用,谢谢!在线等待! 关于file copy的问题 我编译的时候出现的一个问题? JDBC的奇怪问题
下载个 (J)ava (D)esktop (I)ntegrated (C)omponent 类库和几个样例。
如果楼主方便请给我你的地址,我可以寄给你。 请用短信通知,谢谢
这是我写的一个测试,eclipse.ico是显示在托盘里的图标,16×16package test;import javax.swing.JFrame;
import java.awt.event.*;
import java.awt.Point;import snoozesoft.systray4j.*;public class SystrayFrame extends JFrame implements SysTrayMenuListener {
SysTrayMenuItem activateItem = null;
SysTrayMenuItem exitItem = null;
CheckableMenuItem alarmItem = null;
SysTrayMenu menu = null;
Point location = null;
public static void main(String[] args) {
SystrayFrame frame = new SystrayFrame();
frame.setVisible(true);
}
public SystrayFrame () {
super("Systray Frame Test");
setSize(400, 344);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
addWindowListener(new WindowAdapter() {
public void windowIconified(WindowEvent e) {
minimizeToSystray();
}
});
}
public void menuItemSelected(SysTrayMenuEvent e) {
if (e.getActionCommand().equals("alarm")) {
if (alarmItem.getState()) {
}
else {
}
}
else if (e.getActionCommand().equals("activate")) {
activateWindow();
}
else if (e.getActionCommand().equals("exit")) {
System.exit(0);
}
else {
}
} public void iconLeftClicked(SysTrayMenuEvent e) {
} public void iconLeftDoubleClicked(SysTrayMenuEvent e) {
activateWindow();
}
protected void minimizeToSystray() {
location = this.getLocation();
this.dispose();
SysTrayMenuIcon icon = new SysTrayMenuIcon("eclipse.ico");
icon.addSysTrayMenuListener(this);
menu = new SysTrayMenu(icon, "Inspirento");
alarmItem = new CheckableMenuItem("Alarm On", "alarm");
activateItem = new SysTrayMenuItem("Activate Main Window", "activate");
exitItem = new SysTrayMenuItem("Exit", "exit");
alarmItem.addSysTrayMenuListener(this);
activateItem.addSysTrayMenuListener(this);
exitItem.addSysTrayMenuListener(this);
menu.addItem(exitItem);
menu.addSeparator();
menu.addItem(alarmItem);
menu.addItem(activateItem);
}
protected void activateWindow() {
menu.hideIcon();
this.setLocation(location);
this.setVisible(true);
}
}
import java.awt.event.*;
import java.awt.image.*;
import java.beans.*;public class OfficeMM implements ActionListener {
private PopupMenu popup;
private MenuItem[] menuItems;
private Image imgNormal, imgMail;
private TrayIcon trayIcon;
public OfficeMM() {
if (SystemTray.isSupported ()) {
SystemTray tray = SystemTray.getSystemTray (); try {
popup = new PopupMenu();
menuItems = new MenuItem[3];
for(int i = 0; i < menuItems.length; i++) {
menuItems[i] = new MenuItem();
menuItems[i].addActionListener(this);
}
menuItems[0].setLabel("Exit");
menuItems[1].setLabel("Config");
menuItems[2].setLabel("Home");
popup.add(menuItems[2]);
popup.add(menuItems[1]);
popup.addSeparator();
popup.add(menuItems[0]);
imgNormal = Toolkit.getDefaultToolkit().getImage("tree.png");
imgMail = Toolkit.getDefaultToolkit().getImage("tree1.png");
trayIcon = new TrayIcon (imgNormal, "System Tray Demo #2", popup);
trayIcon.setActionCommand("My Icon");
tray.add(trayIcon);
try {
Thread.sleep(5000);
} catch (Exception e) {
}
trayIcon.setImage(imgMail);
} catch (AWTException e) {
System.out.println (e.getMessage ());
return;
}
}
}
public static void main (String [] args) {
new OfficeMM();
} public void actionPerformed(ActionEvent e) {
if (e.getSource() == menuItems[0]) {
System.exit(0);
} else if (e.getSource() == menuItems[1]) {
System.out.println("open");
}
}
}
alarmItem = new CheckableMenuItem("Alarm On", "alarm"); 执行过不去是什么原因?
你执行不过去,是因为你没有用JDK1.6
系统栏的图标只有JDK1.6才支持