ในชวาถาดงาน(ถาดระบบ) ไอคอนจอแสดงผล/กะพริบ
ในชวาถาดงาน(ถาดระบบ) ปรากฏขึ้นและกะพริบ
คลาสยูทิลิตี้เป็นคุณสมบัติใหม่ที่เพิ่มเข้ามาใน Java SE 6 Mustang java.awt.SystemTray ,java.awt.TrayIcon ใช้คลาส. นอกจากนี้เรายังจะแนะนำแอปพลิเคชันตัวอย่างเพื่อให้คุณเข้าใจวิธีใช้งาน
ฟังก์ชั่นถาดระบบ (ถาดงาน)
ถาดระบบ (ถาดงาน) คือแถวของไอคอนขนาดเล็กที่มุมขวาล่างของหน้าจอคอมพิวเตอร์ ใน Java SE 6 มีการเพิ่มคลาสต่อไปนี้เพื่อใช้ฟังก์ชันการทำงานของถาดระบบ
- java.awt.SystemTray
คลาส SystemTray แสดงถึงถาดระบบเดสก์ท็อป - java.awt.TrayIcon
วัตถุ TrayIcon แสดงถึงไอคอนถาดที่สามารถเพิ่มลงในถาดระบบได้
วิธีสร้างไอคอนกะพริบ
คุณอาจต้องการใช้ไซต์ต่อไปนี้เพื่อสร้างไอคอนกะพริบ
สร้างไอคอนกะพริบโดยการอัปโหลดไอคอนในเครื่อง
https://www.bannerkoubou.com/anime/
แอปพลิเคชันตัวอย่าง
แอปพลิเคชันตัวอย่างใช้คลาสยูทิลิตี้ถาดระบบ TaskTrayUtil เพื่อใช้งานฟังก์ชันต่อไปนี้
- เมื่อเริ่มต้นถาดงานถึงไอคอนแสดง.
- คลิก [ปุ่มกะพริบ] เพื่อถาดงานไอคอนจะกะพริบ
บอลลูนยังแสดงข้อความ “พาฉันออกไปจากที่นี่!!” - คลิก [ปุ่มยกเลิก] เพื่อยกเลิกไอคอนที่กะพริบ
- ถาดงานคลิกซ้ายเพียงครั้งเดียวที่ไอคอนเพื่อนำหน้าต่างหลักออกมาบนเดสก์ท็อป
- ถาดงานคลิกขวาที่ไอคอนเพื่อแสดงเมนู PopupMenu เริ่มต้น
- เมื่อหน้าต่างหลักย่อเล็กสุดถาดงานเก็บไว้ใน.
รับซอร์สโค้ด
สามารถรับซอร์สโค้ดได้จากด้านล่าง นอกจากนี้ เมื่อทำการคอมไพล์ โปรดบันทึกไอคอนต่อไปนี้ในตำแหน่งเดียวกับซอร์สโค้ด
นำเข้า javax.swing.ImageIcon;
นำเข้า javax.swing.JButton;
นำเข้า javax.swing.JFrame;
นำเข้า javax.swing.JPanel;
นำเข้า javax.swing.SwingUtilities;
นำเข้า javax.swing.UIManager;
/**
* แสดง / กะพริบไอคอนถาดงาน (ถาดระบบ) ใน Java
*
* ◆ ภาพรวมของชั้นเรียนนี้
* คลาส TaskTray เป็นยูทิลิตี้ที่จัดการถาดงาน
* มีคุณสมบัติดังต่อไปนี้:
* ・แสดงไอคอนในถาดงาน
* - แสดงข้อความป๊อปอัปในถาดงาน
* - ทำให้ถาดงานกระพริบ
*
* ◆ วิธีการใช้งาน
* ส่งคลาส JFrame เป้าหมายไปยังอาร์กิวเมนต์วิธีการด้านล่าง
* ・createTray(JFrame targetFrame)
* ・createTray (เป้าหมาย JFrame สุดท้าย, รูปภาพรูปภาพ, เมนู PopupMenu)
*
*/
TaskTrayUtil คลาสสาธารณะ {
เฟรม JFrame แบบคงที่ส่วนตัว
ส่วนตัว PopupMenu แบบคงที่ defaultMenu;
TrayIcon แบบคงที่ส่วนตัว TrayIcon;
ถาด SystemTray แบบคงที่ส่วนตัว = SystemTray.getSystemTray();
วัตถุคงที่ส่วนตัว INSTANCE_LOCK = วัตถุใหม่ ();
/**
* ตัวอย่างการดำเนินการ
* @param args
*/
โมฆะคงที่สาธารณะ main (String [] args) {
พยายาม {
// ตั้งค่า LookAndFeel เป็น Windows
UIManager.setLookAndFeel(
UIManager.getSystemLookAndFeelClassName());
// ไอคอนปกติ
รูปภาพสุดท้าย img = ImageIcon ใหม่ (
TaskTrayUtil.class.getResource(
“tray_icon.gif”)).getImage();
เฟรม JFrame สุดท้าย =
JFrame ใหม่ ("แสดง/ไอคอนกะพริบในถาดงาน");
frame.setSize(300, 100);
frame.setIconImage(img);
// เก็บไว้ในถาดงานเมื่อหน้าต่างย่อเล็กสุด
// เพิ่มคลาส WindowListener ดังรูป
frame.addWindowListener (WindowAdapter ใหม่ () {
โมฆะสาธารณะ windowIconified (WindowEvent e) {
frame.setVisible(เท็จ);
}
});
JPanel jPanel = JPanel ใหม่();
jPanel.setLayout(FlowLayout ใหม่());
jPanel.setSize(มิติใหม่(219, 70));
// ไอคอนกะพริบ
ภาพสุดท้าย imgLight =
ImageIcon ใหม่ (TaskTrayUtil.class.getResource(
“tray_icon_light.gif”)).getImage();
JButton lightButton = JButton ใหม่ (“กะพริบ”);
lightButton.addActionListener (ActionListener ใหม่ () {
การกระทำที่เป็นโมฆะสาธารณะดำเนินการ (ActionEvent e) {
onAndOffLight(imgLight, null);
displayMessage("ข้อความ", "พาฉันออกไปจากที่นี่!!");
}
});
JButton cancelButton = JButton ใหม่ (“ยกเลิก”);
cancelButton.addActionListener (ActionListener ใหม่ () {
การกระทำที่เป็นโมฆะสาธารณะดำเนินการ (ActionEvent e) {
แทนที่รูปภาพด้วยลบ (img);
}
});
jPanel.add(lightButton, null);
jPanel.add(ยกเลิกปุ่ม, null);
frame.add(jPanel);
// สิ้นสุดการประมวลผล
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// แสดงกรอบตรงกลางหน้าจอ
frame.setLocationRelativeTo(null);
// สร้างถาดงาน
TaskTrayUtil.createTray(เฟรม);
frame.setVisible(จริง);
} จับ (ข้อยกเว้นจ) {
e.printStackTrace();
}
}
/**
*
*/
คงที่ {
createPopupMenu();
}
/**
* สร้างเมนู PopupMenu เริ่มต้นที่จะแสดงในถาดงาน
*มีเมนูดังต่อไปนี้
* ・"นำออกจากถาดงาน"
* ย้ายแอปพลิเคชันเป้าหมายจากถาดงานไปยังเดสก์ท็อป
* เอามันออก.
* (เปิดใช้งานหน้าต่างและนำไปไว้ด้านหน้า)
* - ยุติการสมัครที่จะยุติ
*/
โมฆะคงที่ส่วนตัว createPopupMenu () {
MenuItem getTrayItem = new MenuItem("ลบออกจากถาดงาน");
getTrayItem.addActionListener (ActionListener ใหม่ () {
การกระทำที่เป็นโมฆะสาธารณะดำเนินการ (ActionEvent e) {
คล่องแคล่ว();
}
});
MenuItem exitItem = MenuItem ใหม่ (“ออก”);
exitItem.addActionListener (ActionListener ใหม่ () {
การกระทำที่เป็นโมฆะสาธารณะดำเนินการ (ActionEvent e) {
ลบTrayIcon();
TaskTrayUtil.frame.setVisible (เท็จ);
TaskTrayUtil.frame.dispose();
System.ออก(0);
}
});
defaultMenu = PopupMenu ใหม่ ();
defaultMenu.add(getTrayItem);
defaultMenu.add(exitItem);
}
/**
* สร้างไอคอนถาดและเพิ่มลงในถาดระบบ
* ตั้งค่า Listener สำหรับเหตุการณ์ที่เกิดขึ้นบนไอคอนเป็น targetFrame
ตั้งค่าให้ *.
* เหตุการณ์นี้คือเมื่อดับเบิลคลิกไอคอนถาด
* แยกแอปพลิเคชันเป้าหมาย
* @param targetFrame แอปพลิเคชันเป้าหมาย
*/
โมฆะสาธารณะคงที่ createTray (JFrame targetFrame) {
createTray(กรอบเป้าหมาย, null, null);
}
/**
* สร้างไอคอนถาดและเพิ่มลงในถาดระบบ
*
* @param targetFrame แอปพลิเคชันเป้าหมาย
* @param image รูปภาพรูปภาพที่จะแสดงบนไอคอนถาด
* หากเป็นค่าว่างสามารถรับได้จาก targetFrame ด้วย getIconImage()
* ใช้รูปภาพรูปภาพ
* เมนู @param PopupMenu ที่จะแสดงในถาดงาน
* หากเป็นค่าว่าง ให้แสดง PopupMenu เริ่มต้น
*/
โมฆะคงที่สาธารณะ createTray (JFrame สุดท้าย targetFrame, รูปภาพรูปภาพ,
เมนูป๊อปอัพเมนู) {
// ออกหากไม่รองรับถาดระบบ
ถ้า (!SystemTray.isSupported()) {
กลับ;
}
TaskTrayUtil.frame = targetFrame;
ถ้า (รูปภาพ == null) {
รูปภาพ = targetFrame.getIconImage();
}
ถ้า (เมนู == null) {
เมนู = เมนูเริ่มต้น;
}
TrayIcon = TrayIcon ใหม่ (รูปภาพ, targetFrame.getTitle(), เมนู);
TrayIcon.setImageAutoSize(จริง);
TrayIcon.addMouseListener (MouseAdapter ใหม่ () {
โมฆะสาธารณะ mouseClicked (MouseEvent e) {
ถ้า (SwingUtilities.isLeftMouseButton (e)) {
คล่องแคล่ว();
}
}
});
พยายาม {
ถาด.เพิ่ม(trayIcon);
} จับ (AWTException e1) {
e1.printStackTrace();
}
}
/**
* ลบไอคอนออกจากถาดงาน
* จะต้องถูกเรียกเมื่อแอปพลิเคชันออก
*/
โมฆะสาธารณะแบบคงที่ RemoveTrayIcon () {
Tray.remove(ถาดไอคอน);
}
/**
* ทำให้ไอคอนถาดงานกะพริบ
* @param msg หากจำเป็นเมื่อคลิกไอคอนกะพริบ
* ตั้งค่าข้อความที่จะแสดง
*/
โมฆะคงที่สาธารณะ onAndOffLight (รูปภาพ lightImg, String msg) {
แทนที่รูปภาพ (lightImg);
ChangeLightImgAdapter ปรับ =
ใหม่ TaskTrayUtil().new ChangeLightImgAdapter(ผงชูรส);
TrayIcon.addMouseListener(อะแดปเตอร์);
frame.addWindowListener(อะแดปเตอร์);
}
/**
* เปลี่ยนไอคอนถาดงาน
* รูปภาพ @param เปลี่ยนเฉพาะในกรณีที่แตกต่างจากไอคอนปัจจุบัน
*/
โมฆะคงที่สาธารณะแทนที่รูปภาพ (รูปภาพรูปภาพ) {
ซิงโครไนซ์ (INSTANCE_LOCK) {
ถ้า (!image.equals(trayIcon.getImage())) {
TrayIcon.setImage (รูปภาพ);
}
}
}
/**
* เปลี่ยนไอคอนถาดงาน
* *หากคุณต้องการคืนค่าไอคอนที่กะพริบด้วยเหตุผลบางประการ
* ดูเหมือนว่าจะไร้ประโยชน์เว้นแต่คุณจะลบมันด้วย {@link SystemTray#remove(TrayIcon)})
* รูปภาพ @param เปลี่ยนเฉพาะในกรณีที่แตกต่างจากไอคอนปัจจุบัน
*/
โมฆะคงที่สาธารณะแทนที่ImageWithDelete (รูปภาพรูปภาพ) {
ซิงโครไนซ์ (INSTANCE_LOCK) {
ถ้า (!image.equals(trayIcon.getImage())) {
Tray.remove(ถาดไอคอน);
TrayIcon.setImage (รูปภาพ);
พยายาม {
ถาด.เพิ่ม(trayIcon);
} จับ (ข้อยกเว้นจ) {
e.printStackTrace();
}
}
}
}
/**
* แสดงข้อความป๊อปอัปในถาดงาน
* @param คำบรรยายภาพ
* ข้อความ @param
*/
โมฆะสาธารณะคงที่ displayMessage (คำอธิบายสตริง ข้อความสตริง) {
ถ้า (คำบรรยายภาพ != null || ข้อความ != null) {
TrayIcon.displayMessage (คำอธิบายภาพ ข้อความ
TrayIcon.MessageType.INFO);
}
}
/**
* ย้ายแอปพลิเคชันเป้าหมายจากถาดงานไปยังเดสก์ท็อป
* เอามันออก.
*/
โมฆะคงที่ส่วนตัวใช้งานอยู่ () {
// คืนสถานะเฟรมให้เป็นปกติ
TaskTrayUtil.frame.setExtensedState(JFrame.NORMAL);
TaskTrayUtil.frame.setAlwaysOnTop (จริง);
TaskTrayUtil.frame.setVisible (จริง);
TaskTrayUtil.frame.setAlwaysOnTop(เท็จ);
}
/**
* เหตุการณ์ที่จะสร้างขึ้นเมื่อมีการคลิกไอคอนกะพริบ
* ชั้นเรียนผู้ฟัง
*/
คลาส ChangeLightImgAdapter ใช้ WindowListener, MouseListener {
สายไฟ ImageText;
ChangeLightImgAdapter สาธารณะ (String lightImageText) {
this.lightImageText = lightImageText;
}
/**
* เมื่อคลิกไอคอนถาดงาน
* แสดงข้อความป๊อปอัพ
*/
โมฆะสาธารณะ mousePressed (MouseEvent e) {
TaskTrayUtil.displayMessage (null, lightImageText);
}
/**
* กะพริบเมื่อแอปพลิเคชันเป้าหมายเริ่มทำงาน
* ไอคอนส่งคืน
*/
โมฆะสาธารณะ windowActivated (WindowEvent e) {
TaskTrayUtil.replaceImageWithDelete(TaskTrayUtil.frame
.getIconImage());
TaskTrayUtil.frame.removeWindowListener (สิ่งนี้);
TaskTrayUtil.trayIcon.removeMouseListener (นี้);
}
โมฆะสาธารณะ windowClosed (WindowEvent e) {}
โมฆะสาธารณะ windowClosing (WindowEvent e) {}
โมฆะสาธารณะ windowDeactivated (WindowEvent e) {}
โมฆะสาธารณะ windowDeiconified (WindowEvent e) {}
โมฆะสาธารณะ windowIconified (WindowEvent e) {}
โมฆะสาธารณะ windowOpened (WindowEvent e) {}
โมฆะสาธารณะ mouseClicked (MouseEvent e) {}
โมฆะสาธารณะ mouseEntered (MouseEvent e) {}
โมฆะสาธารณะ mouseExited (MouseEvent e) {}
โมฆะสาธารณะ mouseReleased (MouseEvent e) {}
}
}