プロが教える店舗&オフィスのセキュリティ対策術

ウィンドウを最小化時にタスクトレイに入れ,タスクトレイのアイコンを
ダブルクリックすることで元に戻るようなプログラムを考えています。
GUIはSwingで実装するつもりです。

タスクトレイにアイコンを表示し,最小化時にイベントリスナーから
setVisible()を呼ぶことでウィンドウをタスクトレイに入れるところまでは
できましたが,アイコンをダブルクリックした時に再びsetVisible()を呼んでも
最小化された状態で表示され,元の場所・サイズに戻して表示することができません。

解決法としては
・プログラム側からウィンドウの最小化を解除,元に戻す
・最小化ボタンを押された時に最小化しないようにする
の 2 つを考えましたが,どちらも実装法がわかりません。
また,これら以外に方法はあるのでしょうか。
よろしくお願いします。

A 回答 (1件)

小さな、実動サンプルプログラムを投稿して。

この回答への補足

以下にサンプルプログラムを掲載します。
タスクトレイに表示するアイコンとしてtest.gifが必要です。

-----

import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.JFrame;
import javax.imageio.ImageIO;

public class Sample extends JFrame {
Sample() throws IOException, AWTException {
addWindowListener(new MyWindowListener(this));
SystemTray tray = SystemTray.getSystemTray();
TrayIcon icon = new TrayIcon(ImageIO.read(new File("test.gif")));
icon.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
setVisible(true);
}
});
tray.add(icon);
setVisible(true);
}

public static void main(String[] args) throws IOException, AWTException {
new Sample();
}
}

class MyWindowListener extends WindowAdapter {
private Sample sample = null;

public MyWindowListener(Sample initializer) {
sample = initializer;
}

public void windowIconified(WindowEvent e) {
sample.setVisible(false);
}

public void windowClosing(WindowEvent e) {
sample.setIconImage(null);
System.exit(0);
}
}

補足日時:2008/12/07 16:47
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!