ถาดระบบบนเดสก์ท็อปหมายความว่าเมื่อโปรแกรมถูกย่อเล็กสุดหรือกดปุ่มปิด โปรแกรมจะไม่ออก แต่จะถูกย่อเล็กสุดในพื้นที่สถานะงาน (ระบบ Windows) เมื่อคลิกเมาส์บนไอคอนนั้น พื้นที่มีการแจ้งเตือนและการดำเนินการอื่นๆ บน Microsoft Windows เรียกว่า "พื้นที่สถานะแถบงาน" บน Gnome เรียกว่า "พื้นที่แจ้งเตือน" บน KDE เรียกว่าถาด "ถาดระบบ")" ถาดระบบแชร์โดยแอปพลิเคชันทั้งหมดที่ทำงานบนเดสก์ท็อป
มีการเพิ่มคลาสใหม่สองคลาสใน jdk1.6 เพื่อใช้งาน:
SystemTray และ TrayIcon ต่อไปนี้เป็นการแนะนำโดยละเอียด:
SystemTray
การแนะนำชั้นเรียน:
ในบางแพลตฟอร์ม ซิสเต็มเทรย์อาจไม่มีอยู่หรือไม่ได้รับการรองรับ ดังนั้นก่อนอื่นให้ใช้ SystemTray.isSupported() เพื่อตรวจสอบว่าระบบปัจจุบันรองรับซิสเต็มเทรย์หรือไม่
SystemTray สามารถมีได้ตั้งแต่หนึ่ง TrayIcon ซึ่งสามารถเพิ่มลงในถาดได้โดยใช้เมธอด add(java.awt.TrayIcon) เมื่อไม่จำเป็นต้องใช้ถาดอีกต่อไป ให้ใช้ Remove(java.awt.TrayIcon)
ถอดมันออก
TrayIcon ประกอบด้วยรูปภาพ เมนูป๊อปอัป และชุด Listener ที่เกี่ยวข้อง แอปพลิเคชัน 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;
-
-
* @ผู้เขียน คุณหลิวเทา
-
คลาสสาธารณะ TrayByJdk ขยาย JFrame ใช้งาน ActionListener {
บานหน้าต่าง JPanel ส่วนตัว = null;
ปุ่ม JButton ส่วนตัว = null; // ปุ่มเพื่อเริ่มไอคอนถาด
ป้ายกำกับ JLabel ส่วนตัว = null; // ใช้เพื่อแสดงข้อมูลเกี่ยวกับว่าระบบรองรับถาดหรือไม่
TrayIcon ส่วนตัว TrayIcon = null; // ไอคอนถาด
ตัวจับเวลาส่วนตัว shanshuo = null;
ImageIcon ส่วนตัว icon1 = null;
ImageIcon ส่วนตัว icon2 = null;
ถาด SystemTray ส่วนตัว = null; // อินสแตนซ์ของถาดระบบปฏิบัติการนี้
บูลีนเกนไก = เท็จ;
//ใช้เทคโนโลยีถาดของ jdk1.6 เพื่อให้ได้แอปพลิเคชันข้ามแพลตฟอร์ม
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");
} จับ (ข้อยกเว้นเช่น) {
เช่น printStackTrace();
-
บานหน้าต่าง = JPanel ใหม่ ();
ปุ่ม = ใหม่ JButton("ย่อลงถาด");
ปุ่ม setEnabled (เท็จ);
label = new JLabel("ระบบปฏิบัติการนี้ไม่รองรับถาด");
pane.add(ฉลาก);
pane.add (ปุ่ม);
//ตรวจสอบว่าถาดรองรับหรือไม่
ถ้า (SystemTray.isSupported()) {
นี้.ถาด();
-
shanshuo = ตัวจับเวลาใหม่ (1,000 นี่);
shanshuo.start();
this.getContentPane().add(บานหน้าต่าง);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(300, 200);
this.addWindowStateListener (WindowStateListener ใหม่ () {
โมฆะสาธารณะ windowStateChanged (สถานะ WindowEvent) {
ถ้า (state.getNewState() == 1 || state.getNewState() == 7) {
ยินก้า();
-
-
-
this.setVisible (เท็จ);
System.out.println("=============="+this.isVisible());
-
-
* รหัสที่เกี่ยวข้องกับพาเลท
-
ถาดโมฆะส่วนตัว () {
label.setText("ระบบปฏิบัติการนี้รองรับถาด");
ปุ่ม setEnabled (จริง);
Tray = SystemTray.getSystemTray(); // รับอินสแตนซ์ถาดของระบบปฏิบัติการนี้
//ImageIcon icon = new ImageIcon("tray.gif"); //ไอคอนที่จะแสดงในถาด
PopupMenu pop = new PopupMenu(); // สร้างเมนูป๊อปอัปคลิกขวา
MenuItem show = MenuItem ใหม่ ("แสดงหน้าต่าง");
MenuItem exit = MenuItem ใหม่ ("ออกจากการนำเสนอ");
ผู้เขียน MenuItem = MenuItem ใหม่ ("ผู้เขียน");
-
* TrayIcon มีสามโครงสร้าง
* TrayIcon (รูปภาพรูปภาพ) สร้างด้วย "ไอคอน"
* TrayIcon (รูปภาพรูปภาพ, คำแนะนำเครื่องมือสตริง) ถูกสร้างขึ้นด้วย "ไอคอน" และ "คำแนะนำเครื่องมือ"
* TrayIcon (รูปภาพรูปภาพ, เคล็ดลับเครื่องมือสตริง, ป๊อปอัป PopupMenu) ใช้ "ไอคอน", "เคล็ดลับเครื่องมือ" และ "เมนูป๊อปอัป" เพื่อสร้างไอคอนถาด
-
TrayIcon = ใหม่ TrayIcon(icon1.getImage(), "การสาธิตเทคโนโลยีถาด", ป๊อป);
// หลังจากคลิกปุ่มนี้ หน้าต่างจะปิดและเพิ่มไอคอนถาดลงในถาดระบบ
ปุ่ม addActionListener (ActionListener ใหม่ () {
การกระทำที่เป็นโมฆะสาธารณะดำเนินการ (ActionEvent e) {
พยายาม {
Tray.add(trayIcon); // เพิ่มไอคอนถาดลงในอินสแตนซ์ถาดของระบบ
setVisible(false); // ทำให้มองไม่เห็นหน้าต่าง
} จับ (เช่น AWTException) {
เช่น printStackTrace();
-
-
-
-
* เพิ่มตัวฟังเมาส์ เมื่อเมาส์คลิกสองครั้งที่ไอคอนถาด หน้าต่างจะแสดงตามค่าเริ่มต้น
-
TrayIcon.addMouseListener (MouseAdapter ใหม่ () {
โมฆะสาธารณะ mouseClicked (MouseEvent e) {
if (e.getClickCount() == 2) { // ดับเบิลคลิกเมาส์
Tray.remove(trayIcon); // ลบไอคอนถาดออกจากอินสแตนซ์ถาดของระบบ
setVisible(true); // หน้าต่างแสดงผล
-
-
-
show.addActionListener(new ActionListener() { // คลิกเมนู "แสดงหน้าต่าง" เพื่อแสดงหน้าต่าง
การกระทำที่เป็นโมฆะสาธารณะดำเนินการ (ActionEvent e) {
Tray.remove(trayIcon); // ลบไอคอนถาดออกจากอินสแตนซ์ถาดของระบบ
setVisible(true); // หน้าต่างแสดงผล
-
-
exit.addActionListener(new ActionListener() { // คลิกเมนู "Exit Demo" เพื่อออกจากโปรแกรม
การกระทำที่เป็นโมฆะสาธารณะดำเนินการ (ActionEvent e) {
System.exit(0); //ออกจากโปรแกรม
-
-
author.addActionListener(new ActionListener() { // คลิกเมนู "Exit Demo" เพื่อออกจากโปรแกรม
การกระทำที่เป็นโมฆะสาธารณะดำเนินการ (ActionEvent e) {
แสดงข้อความ();
-
-
pop.add(แสดง);
pop.add(ออก);
pop.add(ผู้เขียน);
-
-
* แสดงข้อมูล
-
โมฆะส่วนตัว showMessage () {
JOptionPane.showMessageDialog(นี่คือ JLabel ใหม่ ("นี่คือถาดระบบ"), "ข้อความ", JOptionPane.INFORMATION_MESSAGE);
-
โมฆะคงที่สาธารณะ main (String [] args) {
ใหม่ TrayByJdk().yinca();
-
โมฆะสาธารณะ yinca () {
พยายาม {
ถาด.เพิ่ม(trayIcon);
} จับ (AWTException e) {
// TODO บล็อก catch ที่สร้างขึ้นอัตโนมัติ
e.printStackTrace();
} // เพิ่มไอคอนถาดลงในอินสแตนซ์ถาดของระบบ
setVisible(false); // ทำให้มองไม่เห็นหน้าต่าง
-
@แทนที่
การกระทำที่เป็นโมฆะสาธารณะดำเนินการ (ActionEvent arg0) {
ถ้า(!เก็นไก){
TrayIcon.setImage(icon2.getImage());
เกนไก = จริง;
}อื่น{
TrayIcon.setImage(icon1.getImage());
เกนไก = เท็จ;
-
-
-