我想让我的窗体在双击托盘图标时可见?
如何捕获双击图标?
谢谢。java - 捕获托盘中图标的双击事件
7
A
回答
9
尝试使用的MouseListener与
public void mousePressed(MouseEvent e) {
if(e.getClickCount() >= 2){
//do something
}
}
4
使用的MouseListener接口
public class MouseEventDemo ... implements MouseListener
和实施
public void mouseClicked(MouseEvent e) { }
你可以找到来自int getClickCount()
它返回的快速人数点击价值,用户连续点击(包括此事件)。例如,返回2进行双击。
2
如果u打算写乌尔自己的功能,用于这方面比他走的东西如下:
捕获鼠标单击事件,保持“长时间戳”初始化为0L作为一个实例变量,
现在双击为3秒或5秒
so
{
if (timeStamp == 0L) {
timeStamp = System.getCurrentTime(); //please chk the exact syntax of this... it gives milli seconds
} else if ((timeStamp + 5000) <= System.getCurrentTime()) // here i am giving time window of 5 sec = 5000 milli seconds
{
//do ur double click code;
then set timeStamp back to 0;
timeStamp = 0L;
} else {
//its first click
timeStamp = System.getCurrentTime();
}
}
7
嗯内两次点击,基本上所有的帖子都是正确的......,但是对于corect输出到DoubleMouseClick必须换到javax.swing.Timer中
例如
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class ClickListener extends MouseAdapter implements ActionListener {
private final static int clickInterval = (Integer) Toolkit.getDefaultToolkit().getDesktopProperty("awt.multiClickInterval");
private MouseEvent lastEvent;
private Timer timer;
public ClickListener() {
this(clickInterval);
}
public ClickListener(int delay) {
timer = new Timer(delay, this);
}
@Override
public void mouseClicked(MouseEvent e) {
/*if (e.getClickCount() > 2) {
return;
}
lastEvent = e;
if (timer.isRunning()) {
timer.stop();
doubleClick(lastEvent);
} else {
timer.restart();
}*/
if (timer.isRunning() && !e.isConsumed() && e.getClickCount() > 1) {
System.out.println("double");
timer.stop();
} else {
timer.restart();
}
}
@Override
public void actionPerformed(ActionEvent e) {
timer.stop();
singleClick(lastEvent);
}
public void singleClick(MouseEvent e) {
}
public void doubleClick(MouseEvent e) {
}
public static void main(String[] args) {
JFrame frame = new JFrame("Double Click Test");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.addMouseListener(new ClickListener() {
@Override
public void singleClick(MouseEvent e) {
System.out.println("single");
}
@Override
public void doubleClick(MouseEvent e) {
System.out.println("double");
}
});
frame.setPreferredSize(new Dimension(200, 200));
frame.pack();
frame.setVisible(true);
}
}
但corerrect为SystemTray中与任务栏图标将被添加的ActionListener
例如
import java.awt.*;
import java.awt.event.*;
import java.net.URL;
import javax.swing.*;
public class TrayIconDemo {
public static void main(String[] args) {
try {// Use an appropriate Look and Feel
//UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
} catch (UnsupportedLookAndFeelException ex) {
ex.printStackTrace();
} catch (IllegalAccessException ex) {
ex.printStackTrace();
} catch (InstantiationException ex) {
ex.printStackTrace();
} catch (ClassNotFoundException ex) {
ex.printStackTrace();
}
UIManager.put("swing.boldMetal", Boolean.FALSE);// Turn off metal's use of bold fonts
SwingUtilities.invokeLater(new Runnable() {//Schedule a job for the event-dispatching thread: adding TrayIcon.
@Override
public void run() {
createAndShowGUI();
}
});
}
private static void createAndShowGUI() {
if (!SystemTray.isSupported()) {//Check the SystemTray support
System.out.println("SystemTray is not supported");
return;
}
final PopupMenu popup = new PopupMenu();
final TrayIcon trayIcon = new TrayIcon(createImage("Icon/failed.png", "tray icon"));
final SystemTray tray = SystemTray.getSystemTray();
MenuItem aboutItem = new MenuItem("About"); // Create a popup menu components
CheckboxMenuItem cb1 = new CheckboxMenuItem("Set auto size");
CheckboxMenuItem cb2 = new CheckboxMenuItem("Set tooltip");
Menu displayMenu = new Menu("Display");
MenuItem errorItem = new MenuItem("Error");
MenuItem warningItem = new MenuItem("Warning");
MenuItem infoItem = new MenuItem("Info");
MenuItem noneItem = new MenuItem("None");
MenuItem exitItem = new MenuItem("Exit");
popup.add(aboutItem); //Add components to popup menu
popup.addSeparator();
popup.add(cb1);
popup.add(cb2);
popup.addSeparator();
popup.add(displayMenu);
displayMenu.add(errorItem);
displayMenu.add(warningItem);
displayMenu.add(infoItem);
displayMenu.add(noneItem);
popup.add(exitItem);
trayIcon.setPopupMenu(popup);
try {
tray.add(trayIcon);
} catch (AWTException e) {
System.out.println("TrayIcon could not be added.");
return;
}
trayIcon.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null, "This dialog box is run from System Tray");
}
});
aboutItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null, "This dialog box is run from the About menu item");
}
});
cb1.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
int cb1Id = e.getStateChange();
if (cb1Id == ItemEvent.SELECTED) {
trayIcon.setImageAutoSize(true);
} else {
trayIcon.setImageAutoSize(false);
}
}
});
cb2.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
int cb2Id = e.getStateChange();
if (cb2Id == ItemEvent.SELECTED) {
trayIcon.setToolTip("Sun TrayIcon");
} else {
trayIcon.setToolTip(null);
}
}
});
ActionListener listener = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
MenuItem item = (MenuItem) e.getSource();
System.out.println(item.getLabel()); //TrayIcon.MessageType type = null;
if ("Error".equals(item.getLabel())) {//type = TrayIcon.MessageType.ERROR ;
trayIcon.displayMessage("Sun TrayIcon Demo", "This is an error message", TrayIcon.MessageType.ERROR);
} else if ("Warning".equals(item.getLabel())) {//type = TrayIcon.MessageType.WARNING;
trayIcon.displayMessage("Sun TrayIcon Demo", "This is a warning message", TrayIcon.MessageType.WARNING);
} else if ("Info".equals(item.getLabel())) { //type = TrayIcon.MessageType.INFO;
trayIcon.displayMessage("Sun TrayIcon Demo", "This is an info message", TrayIcon.MessageType.INFO);
} else if ("None".equals(item.getLabel())) {//type = TrayIcon.MessageType.NONE;
trayIcon.displayMessage("Sun TrayIcon Demo", "This is an ordinary message", TrayIcon.MessageType.NONE);
}
}
};
errorItem.addActionListener(listener);
warningItem.addActionListener(listener);
infoItem.addActionListener(listener);
noneItem.addActionListener(listener);
exitItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
tray.remove(trayIcon);
System.exit(0);
}
});
}
protected static Image createImage(String path, String description) {//Obtain the image URL
URL imageURL = TrayIconDemo.class.getResource(path);
if (imageURL == null) {
System.err.println("Resource not found: " + path);
return null;
} else {
return (new ImageIcon(imageURL, description)).getImage();
}
}
private TrayIconDemo() {
}
}
3
ActionListener actionListener = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//Double click code here
}
};
SystemTray tray = SystemTray.getSystemTray();
TrayIcon trayIcon = new TrayIcon(<icon stuff>);
trayIcon.addActionListener(actionListener);
tray.add(trayIcon);
这是它的工作对我来说
1
trayIcon.addMouseListener(new java.awt.event.MouseAdapter() {
@Override
public void mouseClicked(java.awt.event.MouseEvent evt) {
if (evt.getClickCount() == 2) {
setVisible(true);
setExtendedState(JFrame.NORMAL);
}
}
});
tray.add(trayIcon);
这将完成这项工作。
相关问题
- 1. 捕获双击托盘图标事件
- 2. 捕捉点击气球托盘图标
- 3. 如何使用SWT将双击事件监听器添加到托盘图标?
- 4. Java的托盘图标NPE
- 5. 如何捕获列表和标签上的双击事件
- 6. 用于Java中托盘图标的API
- 7. 系统托盘图标双/单击问题
- 8. C#如何通过双击托盘图标启用表单
- 9. 从地图片段中捕获双击
- 10. 在Android中捕获双击图片
- 11. wxpython捕获wx.Frame中的键盘事件
- 12. 如何在VB.NET中的listview上捕获autosize双击事件?
- 13. 系统托盘是否有可以捕获的事件?
- 14. 捕获标签单击事件
- 15. 在ngTable中捕获双击
- 16. 在图表上单击捕获事件
- 17. 托盘中的C++图标
- 18. 如何在Google地图的标记上获得双击事件
- 19. 双击AS3中的鼠标事件?
- 20. jqPlot - 如何捕捉双击事件
- 21. JOGL不捕获Java鼠标事件
- 22. 没有图标的Java系统托盘
- 23. 单击系统托盘图标Python Win32
- 24. 捕获点击事件
- 25. 捕获点击事件
- 26. highcharts:从捕捉鼠标事件,或捕获鼠标点击整个图表上
- 27. 双击键盘绑定Java
- 28. 如何捕获WindowsFormsHost控件中的鼠标单击事件?
- 29. 捕获VB中的Datagridview中的鼠标点击等事件
- 30. java swing:单击事件双击工作
检查[this](http://java.sun.com/developer/technicalArticles/J2SE/Desktop/javase6/systemtray/)教程。 – abalogh 2011-06-09 07:41:53