Swing/ClickTrayIcon のバックアップの現在との差分(No.4)
- category: swing folder: ClickTrayIcon title: TrayIconのダブルクリック tags: [TrayIcon, SystemTray, MouseListener, JFrame] author: aterai pubdate: 2009-04-13T14:23:01+09:00 description: TrayIconをダブルクリックした場合フレームを表示、シングルクリックした場合はフレームを前面に表示します。 image:
概要
概要
TrayIcon
をダブルクリックした場合フレームを表示、シングルクリックした場合はフレームを前面に表示します。
Screenshot
Advertisement
サンプルコード
サンプルコード
#spandel
Image image = new BufferedImage(16,16,BufferedImage.TYPE_INT_ARGB);
#spanend
#spandel
new StarIcon().paintIcon(null, image.getGraphics(), 0, 0);
#spanend
#spanadd
Image image = new BufferedImage(16, 16, BufferedImage.TYPE_INT_ARGB);
#spanend
#spanadd
Graphics g = image.getGraphics();
#spanend
#spanadd
new StarIcon().paintIcon(null, g, 0, 0);
#spanend
#spanadd
g.dispose();
#spanend
final SystemTray tray = SystemTray.getSystemTray();
#spandel
PopupMenu popup = new PopupMenu();
#spanend
#spandel
MenuItem open = new MenuItem("Option");
#spanend
#spandel
MenuItem exit = new MenuItem("Exit");
#spanend
#spandel
final TrayIcon icon = new TrayIcon(image, "Click Test", popup);
#spanend
#spanadd
PopupMenu popup = new PopupMenu();
#spanend
#spanadd
MenuItem open = new MenuItem("Option");
#spanend
#spanadd
MenuItem exit = new MenuItem("Exit");
#spanend
#spanadd
final TrayIcon icon = new TrayIcon(image, "Click Test", popup);
#spanend
popup.add(open);
popup.add(exit);
icon.addMouseListener(new MouseAdapter() {
@Override public void mouseClicked(MouseEvent e) {
if(e.getButton()==MouseEvent.BUTTON1 && e.getClickCount()==2) {
if (e.getButton() == MouseEvent.BUTTON1 && e.getClickCount() == 2) {
frame.setVisible(true);
}else if(frame.isVisible()) {
frame.setExtendedState(JFrame.NORMAL);
} else if (frame.isVisible()) {
frame.setExtendedState(Frame.NORMAL);
frame.toFront();
}
}
});
open.addActionListener(new ActionListener() {
@Override public void actionPerformed(ActionEvent e) {
frame.setVisible(true);
}
});
exit.addActionListener(new ActionListener() {
@Override public void actionPerformed(ActionEvent e) {
tray.remove(icon);
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
//frame.dispose();
// frame.dispose();
frame.getToolkit().getSystemEventQueue().postEvent(
new WindowEvent(frame, WindowEvent.WINDOW_CLOSING));
}
});
#spandel
try{
#spanend
#spanadd
try {
#spanend
tray.add(icon);
#spandel
}catch(AWTException e) {
#spanend
#spanadd
} catch (AWTException e) {
#spanend
e.printStackTrace();
}
View in GitHub: Java, Kotlin解説
TrayIcon
にマウスリスナーを追加してマウスでダブルクリックした場合の動作を変更します。
解説
TrayIcon
にMouseListener
を追加し、マウスでダブルクリックした場合の動作を変更します。
- 左ボタンをダブルクリック
- フレームが非表示の場合は、再表示
- 左ボタンをシングルクリック
- 左ボタンでダブルクリック
- フレームが非表示の場合は再表示
- 左ボタンでシングルクリック
- フレームが表示、または最小化されている場合、元のサイズに戻して最前面に表示
- フレームが非表示の場合は、なにもしない
- 中ボタンのクリック
- フレームが非表示の場合はなにもしない
- 中ボタンでクリック
- なにもしない
- 右ボタンのクリック
- 右ボタンでクリック
- ポップアップメニューを表示