bằng Javakhay nhiệm vụ(khay hệ thống) biểu tượngHiển thị/nhấp nháy
bằng Javakhay nhiệm vụ(khay hệ thống) được hiển thị và nhấp nháy.
Các lớp tiện ích là các tính năng mới được thêm vào trong Java SE 6 Mustang. java.awt.SystemTray ,java.awt.TrayIcon Sử dụng các lớp học. Chúng tôi cũng sẽ giới thiệu một ứng dụng mẫu để bạn có thể hiểu cách sử dụng nó.
Chức năng khay hệ thống (khay tác vụ)
Khay hệ thống (khay tác vụ) là một dãy các biểu tượng nhỏ nằm ở phía dưới bên phải màn hình máy tính của bạn. Trong Java SE 6, các lớp sau đã được thêm vào để sử dụng chức năng khay hệ thống.
- java.awt.SystemTray
Lớp SystemTray đại diện cho khay hệ thống của máy tính để bàn. - java.awt.TrayIcon
Đối tượng TrayIcon đại diện cho một biểu tượng khay có thể được thêm vào khay hệ thống.
Cách tạo biểu tượng nhấp nháy
Bạn có thể muốn sử dụng trang web sau để tạo biểu tượng nhấp nháy.
Tạo biểu tượng nhấp nháy bằng cách tải lên biểu tượng cục bộ.
https://www.bannerkoubou.com/anime/
ứng dụng mẫu
Ứng dụng mẫu sử dụng lớp tiện ích khay hệ thống TaskTrayUtil để triển khai các chức năng sau.
- Khi bắt đầukhay nhiệm vụĐẾNbiểu tượngTrình diễn.
- Bấm vào [nút nhấp nháy] đểkhay nhiệm vụBiểu tượng sẽ nhấp nháy.
Bong bóng còn hiển thị thông báo "Đưa tôi ra khỏi đây!!" - Nhấp vào [Nút Hủy] để hủy biểu tượng nhấp nháy.
- khay nhiệm vụNhấp chuột trái vào biểu tượng để đưa cửa sổ chính ra màn hình nền.
- khay nhiệm vụNhấp chuột phải vào biểu tượng để hiển thị menu PopupMenu mặc định.
- Khi cửa sổ chính được thu nhỏkhay nhiệm vụĐược lưu trữ trong.
Lấy mã nguồn
Mã nguồn có thể được lấy từ bên dưới. Ngoài ra, khi biên dịch vui lòng lưu biểu tượng sau vào cùng vị trí với mã nguồn.
nhập javax.swing.ImageIcon;
nhập javax.swing.JButton;
nhập javax.swing.JFrame;
nhập javax.swing.JPanel;
nhập javax.swing.SwingUtilities;
nhập javax.swing.UIManager;
/**
* Hiển thị/nháy biểu tượng khay tác vụ (khay hệ thống) trong Java.
*
* ◆ Tổng quan về lớp này
* Lớp TaskTray là một tiện ích xử lý khay tác vụ.
* Cung cấp các tính năng sau:
* ・Hiển thị biểu tượng trên khay tác vụ.
* - Hiển thị thông báo bật lên trên khay tác vụ.
* - Làm cho khay tác vụ nhấp nháy.
*
* ◆ Cách sử dụng
* Truyền lớp JFrame đích cho đối số phương thức bên dưới.
* ・createTray(JFrame targetFrame)
* ・createTray(Khung mục tiêu JFrame cuối cùng, Hình ảnh hình ảnh, menu PopupMenu)
*
*/
lớp công khai TaskTrayUtil {
khung JFrame tĩnh riêng tư;
PopupMenu tĩnh riêng tư defaultMenu;
khayIcon tĩnh riêng tư TrayIcon;
khay SystemTray tĩnh riêng tư = SystemTray.getSystemTray();
Đối tượng tĩnh riêng INSTANCE_LOCK = Đối tượng mới();
/**
* Mẫu thực hiện
* @param lập luận
*/
public static void main(String[] args) {
thử {
// Đặt LookAndFeel thành Windows
UIManager.setLookAndFeel(
UIManager.getSystemLookAndFeelClassName());
// biểu tượng thông thường
Hình ảnh cuối cùng img = ImageIcon mới(
TaskTrayUtil.class.getResource(
“khay_icon.gif”)).getImage();
khung JFrame cuối cùng =
new JFrame(“Hiển thị/biểu tượng nhấp nháy trong khay tác vụ”);
frame.setSize(300, 100);
frame.setIconImage(img);
// Lưu vào khay tác vụ khi cửa sổ được thu nhỏ
// Thêm lớp WindowListener như hình.
frame.addWindowListener(new WindowAdapter() {
public void windowIconified(WindowEvent e) {
frame.setVisible(false);
}
});
JPanel jPanel = JPanel mới();
jPanel.setLayout(FlowLayout mới());
jPanel.setSize(Kích thước mới (219, 70));
// biểu tượng nhấp nháy
Hình ảnh cuối cùng imgLight =
ImageIcon mới(TaskTrayUtil.class.getResource(
“khay_icon_light.gif”)).getImage();
JButton lightButton = JButton mới(“nhấp nháy”);
lightButton.addActionListener(ActionListener mới(){
public void actionPerformed(ActionEvent e) {
onAndOffLight(imgLight, null);
displayMessage(“Tin nhắn”, “Đưa tôi ra khỏi đây!!”);
}
});
JButton cancelButton = JButton mới(“hủy”);
cancelButton.addActionListener(ActionListener mới(){
public void actionPerformed(ActionEvent e) {
thay thếImageWithDelete(img);
}
});
jPanel.add(lightButton, null);
jPanel.add(cancelButton, null);
frame.add(jPanel);
// Kết thúc quá trình xử lý.
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Hiển thị frame ở giữa màn hình.
frame.setLocationRelativeTo(null);
// Tạo khay tác vụ.
TaskTrayUtil.createTray(frame);
frame.setVisible(true);
} bắt (Ngoại lệ e) {
e.printStackTrace();
}
}
/**
*
*/
tĩnh {
createPopupMenu();
}
/**
* Tạo menu PopupMenu mặc định để hiển thị trong khay tác vụ.
*Các menu sau có sẵn.
* ・ "Xóa khỏi khay tác vụ"
* Di chuyển ứng dụng đích từ khay tác vụ sang màn hình nền
* Lấy nó ra.
* (Kích hoạt cửa sổ và đưa nó ra phía trước.)
* - Chấm dứt ứng dụng sẽ bị chấm dứt.
*/
khoảng trống tĩnh riêng createPopupMenu() {
MenuItem getTrayItem = new MenuItem(“Xóa khỏi khay tác vụ”);
getTrayItem.addActionListener(ActionListener mới() {
public void actionPerformed(ActionEvent e) {
tích cực();
}
});
MenuItem exitItem = new MenuItem(“Thoát”);
exitItem.addActionListener(ActionListener mới() {
public void actionPerformed(ActionEvent e) {
loại bỏTrayIcon();
TaskTrayUtil.frame.setVisible(false);
TaskTrayUtil.frame.dispose();
System.exit(0);
}
});
defaultMenu = PopupMenu mới();
defaultMenu.add(getTrayItem);
defaultMenu.add(exitItem);
}
/**
* Tạo biểu tượng khay và thêm nó vào khay hệ thống.
* Đặt trình xử lý các sự kiện xảy ra trên biểu tượng thành targetFrame
Đặt thành *.
* Sự kiện ở đây là khi biểu tượng khay được nhấp đúp.
* Giải nén ứng dụng mục tiêu.
* @param targetFrame Ứng dụng mục tiêu
*/
public static void createTray(JFrame targetFrame) {
createTray(targetFrame, null, null);
}
/**
* Tạo biểu tượng khay và thêm nó vào khay hệ thống.
*
* @param targetFrame Ứng dụng mục tiêu
* @param image Hình ảnh hình ảnh để hiển thị trên biểu tượng khay.
* Nếu null, nó có thể được lấy từ targetFrame bằng getIconImage()
* Sử dụng hình ảnh hình ảnh.
* @param menu PopupMenu để hiển thị trên khay tác vụ.
* Nếu null, hiển thị PopupMenu mặc định.
*/
public static void createTray(Final JFrame targetFrame, Hình ảnh hình ảnh,
Trình đơn PopupMenu) {
// Thoát nếu khay hệ thống không được hỗ trợ.
if (!SystemTray.isSupported()) {
trở lại;
}
TaskTrayUtil.frame = targetFrame;
nếu (hình ảnh == null) {
hình ảnh = targetFrame.getIconImage();
}
nếu (menu == null) {
menu = defaultMenu;
}
khayIcon = new TrayIcon(image, targetFrame.getTitle(), menu);
khayIcon.setImageAutoSize(true);
khayIcon.addMouseListener(MouseAdapter mới(){
public void mouseClicked(MouseEvent e) {
if (SwingUtilities.isLeftMouseButton(e)) {
tích cực();
}
}
});
thử {
khay.add(khayIcon);
} bắt (AWTException e1) {
e1.printStackTrace();
}
}
/**
* Xóa biểu tượng khỏi khay tác vụ.
* Phải được gọi khi ứng dụng thoát.
*/
khoảng trống tĩnh công khai loại bỏTrayIcon() {
khay.remove(khayIcon);
}
/**
* Làm cho biểu tượng khay tác vụ nhấp nháy.
* @param msg nếu cần thiết khi nhấp vào biểu tượng nhấp nháy
* Đặt tin nhắn để hiển thị.
*/
public static void onAndOffLight(Image lightImg, String msg) {
thay thếImage(lightImg);
ChangeLightImgAdapter thích ứng =
TaskTrayUtil mới().New ChangeLightImgAdapter(tin nhắn);
khayIcon.addMouseListener(adap);
frame.addWindowListener(adap);
}
/**
* Thay đổi biểu tượng khay tác vụ.
* Hình ảnh @param Chỉ thay đổi nếu nó khác với biểu tượng hiện tại.
*/
public static void thay thếImage(Hình ảnh) {
đã đồng bộ hóa (INSTANCE_LOCK) {
if (!image.equals(trayIcon.getImage())) {
khayIcon.setImage(hình ảnh);
}
}
}
/**
* Thay đổi biểu tượng khay tác vụ.
* *Nếu bạn muốn khôi phục biểu tượng đang nhấp nháy vì lý do nào đó,
* Nó dường như vô dụng trừ khi bạn xóa nó bằng {@link SystemTray#remove(TrayIcon)}).
* Hình ảnh @param Chỉ thay đổi nếu nó khác với biểu tượng hiện tại.
*/
public static void thay thếImageWithDelete(Hình ảnh hình ảnh) {
đã đồng bộ hóa (INSTANCE_LOCK) {
if (!image.equals(trayIcon.getImage())) {
khay.remove(khayIcon);
khayIcon.setImage(hình ảnh);
thử {
khay.add(khayIcon);
} bắt (Ngoại lệ e) {
e.printStackTrace();
}
}
}
}
/**
* Hiển thị một thông báo bật lên trong khay tác vụ.
* chú thích @param
* văn bản @param
*/
public static void displayMessage(Chú thích chuỗi, Văn bản chuỗi) {
if (chú thích != null || văn bản != null) {
khayIcon.displayMessage(chú thích, văn bản,
TrayIcon.MessageType.INFO);
}
}
/**
* Di chuyển ứng dụng đích từ khay tác vụ sang màn hình nền
* Lấy nó ra.
*/
khoảng trống tĩnh riêng tư đang hoạt động() {
// Đưa trạng thái khung về bình thường.
TaskTrayUtil.frame.setExtendsState(JFrame.NORMAL);
TaskTrayUtil.frame.setAlwaysOnTop(true);
TaskTrayUtil.frame.setVisible(true);
TaskTrayUtil.frame.setAlwaysOnTop(false);
}
/**
* Sự kiện được tạo khi nhấp vào biểu tượng nhấp nháy
* Lớp người nghe.
*/
lớp ChangeLightImgAdapter triển khai WindowListener, MouseListener {
Chuỗi lightImageText;
public ChangeLightImgAdapter(String lightImageText) {
this.lightImageText = lightImageText;
}
/**
* Khi nhấp vào biểu tượng khay tác vụ
* Hiển thị thông báo bật lên.
*/
public void mousePressed(MouseEvent e) {
TaskTrayUtil.displayMessage(null, lightImageText);
}
/**
* Nhấp nháy khi ứng dụng mục tiêu hoạt động
* Biểu tượng trở lại.
*/
public void windowActivated(WindowEvent e) {
TaskTrayUtil.replaceImageWithDelete(TaskTrayUtil.frame
.getIconImage());
TaskTrayUtil.frame.removeWindowListener(this);
TaskTrayUtil.trayIcon.removeMouseListener(this);
}
public void windowClosed(WindowEvent e) {}
public void windowClosing(WindowEvent e) {}
public void windowDeactivated(WindowEvent e) {}
public void windowDeiconified(WindowEvent e) {}
public void windowIconified(WindowEvent e) {}
public void windowOpened(WindowEvent e) {}
public void mouseClicked(MouseEvent e) {}
public void mouseEntered(MouseEvent e) {}
public void mouseExit(MouseEvent e) {}
public void mouseRelease(MouseEvent e) {}
}
}