3

TrayIcon.displayMessage を使用してポップアップ通知を表示する場合、Java 6 のドキュメントには、「メッセージをクリックすると ActionEvent がトリガーされる可能性がある」と記載されています。

http://docs.oracle.com/javase/6/docs/api/java/awt/TrayIcon.html#displayMessage%28java.lang.String,%20java.lang.String,%20java.awt.TrayIcon.MessageType% 29

'5月'?ありがとう、ドキュメント。

私の Windows 2000 テスト VM では、メッセージをクリックしても ActionEvent がトリガーされないように見えます (残念ながら、テストするための新しい Windows ライセンスを所有していません) が、Ubuntu と OS X では同じコードでトリガーされます。

注: アイコン自体をクリックすると、マウス リスナーでイベントがトリガーされます。

とにかく、私の具体的な質問は次のとおりです。

  1. Windows 2000 では、通知をクリックしても ActionEvent がトリガーされないというのは正しいですか、それとも間違っていますか?

  2. Windows XP または Windows 7 で ActionEvent をトリガーすることはできますか?

最小限のサンプル コードを以下に示します。Windows 2000 でこれを実行java Testすると、通知をクリックしてもコマンド ライン出力が生成されません。

import java.awt.*;
import java.awt.event.*;
import java.awt.image.BufferedImage;

import javax.swing.SwingUtilities;

public class Test
{
    public static void main(String[] args)
    {
        SwingUtilities.invokeLater(new Runnable()
        {
            public void run()
            {
                TrayIcon icon = new TrayIcon(
                    new BufferedImage(16, 16, BufferedImage.TYPE_INT_RGB));
                icon.addActionListener(new ActionListener()
                {
                    @Override
                    public void actionPerformed(ActionEvent arg0)
                    {
                        System.err.println("ActionEvent: " + arg0);
                    }
                });
                try
                {
                    SystemTray.getSystemTray().add(icon);
                }
                catch(AWTException e)
                {
                    e.printStackTrace();
                }
                icon.displayMessage("New message", "Can you click on this?",
                    TrayIcon.MessageType.INFO);
            }
        });
    }
}
4

1 に答える 1

1

あなたが扱っている問題は、クロスプラットフォームの埋め込みの問題です。そのため、イベントが「トリガーされる可能性があります」

于 2012-07-26T20:03:43.277 に答える