Sử dụng java thêm ứng dụng vào khay hệ thống!

Posted on January 7, 2006

1


Phiên bản Java mới nhất 6.0 beta 2 (Mustang) đã cho phép bạn có thể truy cập khay hệ thống với sự giúp đỡ của hai lớp trong gói java.awt: SystemTray và TrayIcon. Các lớp này cho phép bạn có thể thêm chức năng đồ họa, menu, và tooltip vào khay hệ thống. Nếu được thông qua trong đặc tả JSR 270 bạn có thể tìm thấy đặc điểm này trong phiên bản hoàn chỉnh.

Lớp SystemTray thay mặt cho khay hệ thống của desktop. Bạn có thể truy cập đến khay hệ thống bằng cách gọi phương thức tĩnh SystemTray.getSystemTray(). Trước khi làm như vậy, mặc dù, ứng dụng sẽ luôn kiểm tra xem khay hệ thống có được hỗ trợ không bằng phương thức SystemTray.isSupported(). Nếu khay hệ thống không hiển thị hoặc không được hỗ trợ, phương thức đó sẽ trả về kết quả false. Như vậy phương thức SystemTray.getSystemTray() sẽ ném ra một ngoại lệ.

Mọi ứng dụng Java chỉ có một thể hiện đơn của lớp SystemTray. Do đó, một ứng dụng không có khả năng tạo ra đối tương SystemTray của riêng nó, thay vào đó nó phải sử dụng phương thức getSystemTray();

SystemTray chứa một hoặc nhiều TrayIcon, được thêm vào khay bằng cách sử dụng phương thức add(TrayIcon), và được di chuyển khi không còn còn cần nữa bằng phương thức remove(TrayIcon). Trong Mustang, sẽ có một ngoại lệ được ném ra nếu không thể thêm TrayIcon vào khay.

Dưới đây là đoạn code demo việc sử dụng hai lớp nói trên:

final TrayIcon trayIcon;

if (SystemTray.isSupported()) {

SystemTray tray = SystemTray.getSystemTray();
Image image = Toolkit.getDefaultToolkit().getImage(“tray.gif”);

MouseListener mouseListener = new MouseListener() {

public void mouseClicked(MouseEvent e) {
System.out.println(“Tray Icon – Mouse clicked!”);
}

public void mouseEntered(MouseEvent e) {
System.out.println(“Tray Icon – Mouse entered!”);
}

public void mouseExited(MouseEvent e) {
System.out.println(“Tray Icon – Mouse exited!”);
}

public void mousePressed(MouseEvent e) {
System.out.println(“Tray Icon – Mouse pressed!”);
}

public void mouseReleased(MouseEvent e) {
System.out.println(“Tray Icon – Mouse released!”);
}
};

ActionListener exitListener = new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println(“Exiting…”);
System.exit(0);
}
};

PopupMenu popup = new PopupMenu();
MenuItem defaultItem = new MenuItem(“Exit”);
defaultItem.addActionListener(exitListener);
popup.add(defaultItem);

trayIcon = new TrayIcon(image, “Tray Demo”, popup);

ActionListener actionListener = new ActionListener() {
public void actionPerformed(ActionEvent e) {
trayIcon.displayMessage(“Action Event”,
“An Action Event Has Been Peformed!”,
TrayIcon.MessageType.INFO);
}
};

trayIcon.setImageAutoSize(true);
trayIcon.addActionListener(actionListener);
trayIcon.addMouseListener(mouseListener);

try {
tray.add(trayIcon);
} catch (AWTException e) {
System.err.println(“TrayIcon could not be added.”);
}

} else {

// System Tray is not supported

}

Posted in: Java