TrayIcon
Seems like TrayIcon doesn't get mouse events when MainFrame is hidden. Anyone have a workaround for this?
Code below requires AppFramework.jar & swing-worker.jar
import java.awt.AWTException;
import java.awt.Image;
import java.awt.SystemTray;
import java.awt.Toolkit;
import java.awt.TrayIcon;
import java.awt.Window;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowStateListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import application.SingleFrameApplication;
publicclass MyApplicationextends SingleFrameApplication{
publicstaticvoid main(String[] args){
launch(MyApplication.class, args);
}
@Override
publicvoid startup(String[] ignoreArgs){
SystemTray systemTray = SystemTray.getSystemTray();
if(SystemTray.isSupported()){
Image image = Toolkit.getDefaultToolkit().getImage("tray.gif");
TrayIcon trayIcon =new TrayIcon(image);
trayIcon.addMouseListener(trayIconMouseListener);
trayIcon.setImageAutoSize(true);
try{
systemTray.add(trayIcon );
}catch (AWTException e){
e.printStackTrace();
}
}
getMainFrame().addWindowStateListener(windowStateListener);
show(new JButton("Hello World"));
}
private WindowStateListener windowStateListener =new WindowStateListener(){
publicvoid windowStateChanged(WindowEvent windowEvent){
if(windowEvent.getNewState() == JFrame.ICONIFIED){
Window window = windowEvent.getWindow();
window.setVisible(false);
}else{
Window window = windowEvent.getWindow();
window.setVisible(true);
}
}
};
private MouseListener trayIconMouseListener =new MouseListener(){
publicvoid mouseClicked(MouseEvent mouseEvent){
if(mouseEvent.getButton() == 1 && mouseEvent.getClickCount() == 2){
getMainFrame().setExtendedState(JFrame.NORMAL);
}
}
publicvoid mouseEntered(MouseEvent arg0){
}
publicvoid mouseExited(MouseEvent arg0){
}
publicvoid mousePressed(MouseEvent arg0){
}
publicvoid mouseReleased(MouseEvent arg0){
}
};
}

