1

現在、私の (JRuby コード) では、「バルーンを閉じる」メッセージを「トレイ アイコンをダブルクリックする」(awt.TrayIcon インスタンス) とは異なる方法で処理したいと考えています。

import java.awt.TrayIcon
import java.awt.event.MouseListener

tray = java.awt.SystemTray::system_tray
image = java.awt.Toolkit::default_toolkit.get_image('')

trayIcon = TrayIcon.new(image, 'name', nil)

tray.add(trayIcon)
trayIcon.addActionListener do |evt|
  puts "in here", evt.id
end
trayIcon.displayMessage("title", "try clicking within the baloon, but not the x, then double clicking the tray icon", TrayIcon::MessageType::INFO)
puts "try clicking within the balloon message, or double clicking, both seem to generate the same event"

Java https://gist.github.com/4338167の同等のコード

このアクション リスナーは、1) ユーザーがシステム トレイのアイコンをダブルクリックしたとき、または 2) ユーザーがバルーン (x ではなく) をクリックしてトレイの最近のバルーン メッセージを閉じたときに呼び出されるようです。

2 つの異なるイベント タイプ (どちらもイベント ID 1001 のようです) を区別することはできますか? または、バルーンがまだ上にあることを何らかの形で「知る」ことができますか?

4

1 に答える 1

3

のドキュメントはTrayIcon、バルーンメッセージをクリックすると がトリガーされる可能性があることを暗示しているようですActionEvent。これは、あなたの場合、アイコン自体をダブルクリックするのと同じです。

クリックでトリガーするマウス リスナーを追加する必要がある場合があります。クリック イベントActionEventの後に一定時間以内に が続く場合はダブルクリックであり、そうでない場合は表示されているメッセージのクリックです。十分に小さい間隔を選択することで、それらを適切に区別できるはずです。

于 2012-12-19T19:32:28.807 に答える