jdk 1.6 systemtray 系统托盘
解决方案 »
- 我误解了volatile作用,大家能纠正一我吗?
- 求wrox的《java网络编程指南》源码
- 将字符串转为日期时间类型,要精确到毫秒
- java文件操作(急)
- 各位帮忙指点指点!!!先谢谢了。
- 关于Applet和Application 转换的小问题??请高手指教!
- 跟服务器之间传送字节形式的二进制流,入参为String类型,怎样转变呢?50分!
- 有两个按钮,我点选其中一个,如何使之触发另一个按钮的事件?
- 一个我不懂的数据库访问问题,关于自动编号的获取
- 110分求电子板Complete Java 2 Certification Study Guide
- Java做tcp客户端的问题
- 请问下面的这个代码跟栈有什么关系?
第9节就是讲TRAY的
import java.awt.Desktop;
import java.awt.Image;
import java.awt.MenuItem;
import java.awt.PopupMenu;
import java.awt.SystemTray;
import java.awt.TrayIcon;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;public class DesktopTray {
private static Desktop desktop;
private static SystemTray tray;
private static PopupMenu menu; public static void main(String[] args) {
if (Desktop.isDesktopSupported()) {
desktop = Desktop.getDesktop();
}
if (SystemTray.isSupported()) {
tray = SystemTray.getSystemTray();
Image image = Toolkit.getDefaultToolkit().getImage("Tray.png");
creatPopupMenu();
TrayIcon ti = new TrayIcon(image, "Tray", menu);
try {
tray.add(ti);
} catch (AWTException e) { e.printStackTrace();
}
}
} public static void creatPopupMenu() {
menu = new PopupMenu();
MenuItem openBrowser = new MenuItem("Open Browser");
openBrowser.addActionListener(new ActionListener() { @Override
public void actionPerformed(ActionEvent e) {
openBrowser("http://www.sina.com.cn"); } });
MenuItem sendMail = new MenuItem("Send Mail");
sendMail.addActionListener(new ActionListener() { @Override
public void actionPerformed(ActionEvent e) {
sendMail("mailto:[email protected]"); } });
MenuItem edit = new MenuItem("Edit");
edit.addActionListener(new ActionListener(){ @Override
public void actionPerformed(ActionEvent e) {
edit();
}
});
MenuItem exit = new MenuItem("Exit");
exit.addActionListener(new ActionListener(){ @Override
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
menu.add(openBrowser);
menu.add(sendMail);
menu.add(edit);
menu.add(exit);
} public static void openBrowser(String url) {
if (desktop != null && desktop.isSupported(Desktop.Action.BROWSE)) {
try {
desktop.browse(new URI(url));
} catch (IOException e) { e.printStackTrace();
} catch (URISyntaxException e) { e.printStackTrace();
}
}
} public static void sendMail(String mail) {
if (desktop != null && desktop.isSupported(Desktop.Action.MAIL)) {
try {
desktop.mail(new URI(mail));
} catch (IOException e) { e.printStackTrace();
} catch (URISyntaxException e) { e.printStackTrace();
}
}
} public static void edit() {
if (desktop != null && desktop.isSupported(Desktop.Action.EDIT)) {
File file = new File("ltz.doc");
if (!file.exists()) {
try {
file.createNewFile(); } catch (IOException e) { e.printStackTrace();
} }
try {
desktop.edit(file);
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
Tray.png 自己画
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.MenuItem;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Tray;
import org.eclipse.swt.widgets.TrayItem;
public class Test {
public static void main(String[] args) {
Display display = new Display();
Shell shell = new Shell(display);
Image image = new Image(display, 16, 16);
final Tray tray = display.getSystemTray();
if (tray == null) {
System.out.println("The system tray is not available");
} else {
final TrayItem item = new TrayItem(tray, SWT.NONE);
item.setToolTipText("SWT TrayItem");
item.addListener(SWT.Show, new Listener() {
public void handleEvent(Event event) {
System.out.println("show");
}
});
item.addListener(SWT.Hide, new Listener() {
public void handleEvent(Event event) {
System.out.println("hide");
}
});
item.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event event) {
System.out.println("selection");
}
});
item.addListener(SWT.DefaultSelection, new Listener() {
public void handleEvent(Event event) {
System.out.println("default selection");
}
});
final Menu menu = new Menu(shell, SWT.POP_UP);
for (int i = 0; i < 8; i++) {
MenuItem mi = new MenuItem(menu, SWT.PUSH);
mi.setText("Item" + i);
mi.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event event) {
System.out.println("selection " + event.widget);
}
});
if (i == 0)
menu.setDefaultItem(mi);
}
item.addListener(SWT.MenuDetect, new Listener() {
public void handleEvent(Event event) {
menu.setVisible(true);
}
});
item.setImage(image);
}
shell.setBounds(50, 50, 300, 200);
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
image.dispose();
display.dispose();
}
}
你说的例子用了
org.eclipse.jface.action.MenuManager;
org.eclipse.swt.SWT;这些包。
int width = shell.getMonitor().getClientArea().width;
int height = shell.getMonitor().getClientArea().height;
int x = shell.getSize().x;
int y = shell.getSize().y;
if(x>width)
shell.getSize().x = width;
if(y>height)
shell.getSize().y = height;
shell.setLocation((width-x)/2, (height-y)/2);