Quiero hacer que mi formulario sea visible cuando hago doble clic en el icono de la bandeja?
¿Cómo puedo ver el doble clic en el ícono?
Gracias.java: evento de captura de doble clic en el icono en la bandeja
Respuesta
Intente utilizar MouseListener con interfaz
public void mousePressed(MouseEvent e) {
if(e.getClickCount() >= 2){
//do something
}
}
Uso MouseListener
public class MouseEventDemo ... implements MouseListener
e implementar
public void mouseClicked(MouseEvent e) { }
Puede averiguar el valor clic desde int getClickCount()
devuelve el número de rápida , clics consecutivos que ha realizado el usuario (incluido este evento). Por ejemplo, devuelve 2 para un doble clic.
u si están planeando escribir ur propia función para esto que se vaya algo de la siguiente manera:
captura el evento de ratón se hace clic, mantener un "timeStamp larga" inicializar a 0L como una variable de instancia,
ahora doble clic es dos clics dentro de 3 segundos o 5 seg
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();
}
}
hmmm, básicamente todos los mensajes de ... son correctas, pero para la salida a la corect DoubleMouseClick se deben envolver a la javax.swing.Timer
por ejemplo
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);
}
}
pero corerrect para SystemTray con TrayIcon se añada ActionListener
por ejemplo
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() {
}
}
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);
Esta es la forma en que trabajó para mí
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);
Esto hará el trabajo.
- 1. Icono de bandeja parpadeante
- 2. Icono de la bandeja del sistema en C++
- 3. Evento de doble clic en android
- 4. Recibiendo el evento de doble clic
- 5. Determinar la ubicación del icono de bandeja
- 6. Cómo automatizar el clic derecho en el icono en la bandeja del sistema usando C#
- 7. Emular el evento de doble clic en Datagrid con touchDown
- 8. Implementando el evento de doble clic en Silverlight 4 Datagrid
- 9. identificando doble clic en java
- 10. Agregar Evento de doble clic en la celda CellTable - GWT
- 11. Abrir ventana emergente (Menú) en el icono de la bandeja de tareas con clic izquierdo usando java
- 12. Hacer doble clic en un evento en el elemento JList
- 13. Animación del icono de bandeja
- 14. Captura del evento de clic de pestaña en Android Tabview
- 15. El icono de la bandeja del sistema aparece distorsionado
- 16. Hacer doble clic en el evento en el borde de la ventana de WPF
- 17. Mejor tamaño de icono para mostrar en la bandeja
- 18. .NET: haga doble clic en evento en TabControl
- 19. C# Listbox Elemento Doble clic Evento
- 20. Interceptar clic simple o doble del mouse - solo ejecutar doble clic en el código al hacer doble clic
- 21. Haga clic en evento en jTable -Java
- 22. Distinguir entre un solo clic y doble clic en Java
- 23. Evento de doble clic en la opción de cuadro de lista no activada en IE
- 24. Icono de notificación permanece en la bandeja del sistema en la aplicación Cerrar
- 25. Necesita cancelar eventos de clic/mouseup cuando se hace doble clic en evento detectado
- 26. El icono agregado a la bandeja de notificaciones desaparece en el mouse sobre
- 27. Salir/deshabilitar el modo de edición después de hacer doble clic en evento manejado
- 28. Adjuntar evento de doble clic a una etiqueta
- 29. Icono de la bandeja del sistema con C# Console La aplicación no mostrará el menú
- 30. Personas que hacen doble clic en todo en las páginas web ... jQuery doble clic en el problema
Consulte [this] (http://java.sun.com/developer/technicalArticles/J2SE/Desktop/javase6/systemtray/) tutorial. – abalogh