0

現在、JFrame をシステム トレイに最小化する作業を行っていますが、以下に示すように成功しました。

    // 
    URL resource = panel.getClass().getClassLoader().getResource("boston.png");
    System.out.println("rfc95Panel.getClass().getClassLoader().getResource() is: " + rfc95Panel.getClass().getClassLoader().getResource("boston.png"));

    Image image = Toolkit.getDefaultToolkit().getImage(resource);

    //
    frame.setIconImage(image);

    // 
    if (SystemTray.isSupported()) {
        final TrayIcon icon = new TrayIcon(image);
        icon.setToolTip("Program minimised");

        // 
        icon.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                frame.setVisible(true);
                frame.setExtendedState(frame.NORMAL);
                getSystemTray().remove(icon);
            }
        });

        // Adds the specified window state listener to receive window events 
        // from this window. If l is null, no exception is thrown and no action 
        // is performed.
        frame.addWindowListener(new WindowAdapter() {

            @Override
            public void windowIconified(WindowEvent e) {
                frame.setVisible(false);
                try {
                    getSystemTray().add(icon);
                } catch (AWTException e1) {
                    e1.printStackTrace();
                }
            }
        });
    }

問題は、最小化すると、システム トレイを開いたときに画像/アイコンが表示されないことです。つまり、ツール ヒントは表示されますが、プログラムに関連するアイコンは表示されません。下の画像を参照してください。

システム トレイ イメージ

私が見逃しているものについてのアイデアはありますか? それは基本的なことかもしれないと思います。

4

1 に答える 1

1

私が遭遇した上記の問題に対する簡単な答えは、sys トレイ アイコンとして使用するイメージのサイズでした。基本的に私の寸法は 64 x 64 でしたが、私の場合は寸法を小さくするのが理想的で、画像を 16 x 16 に縮小しました。

于 2013-07-02T11:55:21.763 に答える