デスクトップ上のシステム トレイは、プログラムが最小化されても閉じるボタンが押されても終了せず、その中のアイコンをクリックするとタスク ステータス領域 (Windows システム) で最小化されることを意味します。エリアには、プロンプトやその他の操作があります。 Microsoft Windows では「タスクバー ステータス領域」、Gnome では「通知領域」、KDE では「システム トレイ」と呼ばれます。システム トレイは、デスクトップ上で実行されているすべてのアプリケーションで共有されます。
次の 2 つの新しいクラスが実装のために jdk1.6 に追加されました。
SystemTray と TrayIcon については、以下に詳しく説明します。
システムトレイ
クラス紹介:
一部のプラットフォームでは、システム トレイが存在しないかサポートされていない場合があるため、まず SystemTray.isSupported() を使用して、現在のシステムがシステム トレイをサポートしているかどうかを確認します。
SystemTray には 1 つ以上の TrayIcon を含めることができ、add(java.awt.TrayIcon) メソッドを使用してトレイに追加できます。トレイが不要になった場合は、remove(java.awt.TrayIcon) を使用します。
取り外してください。
TrayIcon は、画像、ポップアップ メニュー、および関連するリスナーのセットで構成されます。すべての Java アプリケーションには SystemTray インスタンスがあり、これにより、アプリケーションは実行中にデスクトップ システム トレイへの接続を確立できます。
SystemTray インスタンスは、getSystemTray() メソッドを通じて取得できます。アプリケーションは独自の SystemTray を作成できません
次のようにコードをコピーします。
インポートjava.awt.AWTException;
java.awt.MenuItemをインポートします。
インポートjava.awt.PopupMenu;
インポート java.awt.SystemTray;
java.awt.TrayIcon をインポートします。
インポートjava.awt.event.ActionEvent;
インポート java.awt.event.ActionListener;
インポート java.awt.event.MouseAdapter;
インポート java.awt.event.MouseEvent;
インポートjava.awt.event.WindowEvent;
インポート java.awt.event.WindowStateListener;
インポート javax.swing.ImageIcon;
javax.swing.JButtonをインポートします。
javax.swing.JFrameをインポートします。
javax.swing.JLabel をインポートします。
インポート javax.swing.JOptionPane;
javax.swing.JPanelをインポートします。
javax.swing.Timer をインポートします。
javax.swing.UIManager をインポートします。
/**
*
* @著者LiuTao氏
*/
public class TrayByJdk extends JFrameimplements ActionListener{
プライベート JPanel ペイン = null;
private JButton button = null // トレイアイコンを開始するボタン。
private JLabel label = null // システムがトレイをサポートしているかどうかに関する情報を表示するために使用されます。
private TrayIcon TrayIcon = null;
プライベートタイマー shanshuo = null;
プライベート ImageIcon icon1 = null;
プライベート ImageIcon icon2 = null;
private SystemTray トレイ = null //このオペレーティング システム トレイのインスタンス
ブール値ゲンガイ = false;
//jdk1.6 のトレイ テクノロジーを使用してクロスプラットフォーム アプリケーションを実現する
public TrayByJdk() {
//super("パレット技術デモ");
icon1 = new ImageIcon("G://javaworks//eclipsework//shanzhaiQQClient//images//16.gif"); // トレイに表示されるアイコン
icon2 = new ImageIcon("G://javaworks//eclipsework//shanzhaiQQClient//images//15.gif"); // トレイに表示されるアイコン
試す {
// LookAndFeel を Windows スタイルに設定します
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
} catch (例外例) {
ex.printStackTrace();
}
ペイン = 新しい JPanel();
button = new JButton("トレイに縮小");
button.setEnabled(false);
label = new JLabel("このオペレーティング システムはトレイをサポートしていません");
pane.add(ラベル);
ペイン.追加(ボタン);
//トレイがサポートされているかどうかを判断します
if (SystemTray.isSupported()) {
this.tray();
}
shanshuo = 新しいタイマー(1000,this);
shanshuo.start();
this.getContentPane().add(ペイン);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(300, 200);
this.addWindowStateListener(new WindowStateListener () {
public void windowStateChanged(WindowEvent state) {
if(state.getNewState() == 1 || state.getNewState() == 7) {
インカ();
}
}
});
this.setVisible(false);
System.out.println("=============="+this.isVisible());
}
/**
※パレット関連コード
*/
プライベート void トレイ() {
label.setText("このオペレーティング システムはトレイをサポートしています");
button.setEnabled(true);
トレイ = SystemTray.getSystemTray(); // このオペレーティング システムのトレイ インスタンスを取得します。
//ImageIcon icon = new ImageIcon("tray.gif") //トレイに表示されるアイコン
PopupMenu Pop = new PopupMenu() // 右クリックのポップアップ メニューを作成します。
MenuItem show = new MenuItem("ウィンドウを表示");
MenuItem exit = new MenuItem("プレゼンテーションを終了");
MenuItem 作成者 = new MenuItem("作成者");
/**
※TrayIconには3つの構造があります
※TrayIcon(イメージ画像)は「アイコン」で構成されています
※TrayIcon(イメージ画像、文字列ツールチップ)は「アイコン」と「ツールチップ」で構成されています
* TrayIcon(イメージ画像、文字列ツールチップ、PopupMenuポップアップ)は、「アイコン」、「ツールチップ」、および「ポップアップメニュー」を使用してトレイアイコンを構築します
*/
TrayIcon = new TrayIcon(icon1.getImage(), "トレイ技術デモンストレーション", Pop);
// このボタンをクリックするとウィンドウが閉じ、トレイ アイコンがシステム トレイに追加されます。
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
試す {
トレイ.add(trayIcon); // トレイ アイコンをシステムのトレイ インスタンスに追加します。
setVisible(false); // ウィンドウを非表示にします
} キャッチ (AWTException 例) {
ex.printStackTrace();
}
}
});
/**
* マウスリスナーを追加すると、トレイアイコンをマウスでダブルクリックすると、デフォルトでウィンドウが表示されます
*/
TrayIcon.addMouseListener(new MouseAdapter() {
public void MouseClicked(MouseEvent e) {
if (e.getClickCount() == 2) { // マウスのダブルクリック
トレイ.remove(trayIcon); // システムのトレイ インスタンスからトレイ アイコンを削除します。
setVisible(true); // ウィンドウを表示します。
}
}
});
show.addActionListener(new ActionListener() { // 「ウィンドウの表示」メニューをクリックしてウィンドウを表示します
public void actionPerformed(ActionEvent e) {
トレイ.remove(trayIcon); // システムのトレイ インスタンスからトレイ アイコンを削除します。
setVisible(true); // ウィンドウを表示します。
}
});
exit.addActionListener(new ActionListener() { // [デモの終了] メニューをクリックしてプログラムを終了します
public void actionPerformed(ActionEvent e) {
System.exit(0); //プログラムを終了します。
}
});
author.addActionListener(new ActionListener() { // [デモの終了] メニューをクリックしてプログラムを終了します
public void actionPerformed(ActionEvent e) {
showMessage();
}
});
Pop.add(表示);
Pop.add(終了);
Pop.add(作成者);
}
/**
* 表示情報
*/
private void showMessage() {
JOptionPane.showMessageDialog(this, new JLabel("これはシステム トレイです"), "メッセージ", JOptionPane.INFORMATION_MESSAGE);
}
public static void main(String[] args) {
新しい TrayByJdk().yinca();
}
パブリック void yinca(){
試す {
トレイ.add(トレイアイコン);
キャッチ (AWTException e) {
// TODO 自動生成された catch ブロック
e.printStackTrace();
} // トレイ アイコンをシステムのトレイ インスタンスに追加します
setVisible(false); // ウィンドウを非表示にします
}
@オーバーライド
public void actionPerformed(ActionEvent arg0) {
if(!ゲンガイ){
TrayIcon.setImage(icon2.getImage());
ゲンガイ = 真。
}それ以外{
TrayIcon.setImage(icon1.getImage());
ゲンガイ = false;
}
}
}