- 締切済み
Swingで作ったウィンドウの最小化と復元
ウィンドウを最小化時にタスクトレイに入れ,タスクトレイのアイコンを ダブルクリックすることで元に戻るようなプログラムを考えています。 GUIはSwingで実装するつもりです。 タスクトレイにアイコンを表示し,最小化時にイベントリスナーから setVisible()を呼ぶことでウィンドウをタスクトレイに入れるところまでは できましたが,アイコンをダブルクリックした時に再びsetVisible()を呼んでも 最小化された状態で表示され,元の場所・サイズに戻して表示することができません。 解決法としては ・プログラム側からウィンドウの最小化を解除,元に戻す ・最小化ボタンを押された時に最小化しないようにする の 2 つを考えましたが,どちらも実装法がわかりません。 また,これら以外に方法はあるのでしょうか。 よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- _ranco_
- ベストアンサー率58% (126/214)
回答No.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); } }