Võ Văn Hải's blog

Chỉ có một điều tuyệt đối đó là mọi thứ đều tương đối…

Thêm Mouse listener/Mouse motion listener vào TrayIcon

Thêm Mouse Listener vào Tray Icon

import java.awt.AWTException;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.MenuItem;
import java.awt.PopupMenu;
import java.awt.SystemTray;
import java.awt.TrayIcon;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.awt.image.BufferedImage;

public class SystemTrayDemo2 {
public static void main(String[] args) {
if (!SystemTray.isSupported()) {
return;
}
SystemTray tray = SystemTray.getSystemTray();

Dimension size = tray.getTrayIconSize();
BufferedImage bi = new BufferedImage(size.width, size.height, BufferedImage.TYPE_INT_RGB);
Graphics g = bi.getGraphics();

g.setColor(Color.blue);
g.fillRect(0, 0, size.width, size.height);
g.setColor(Color.yellow);
int ovalSize = (size.width < size.height) ? size.width : size.height;
ovalSize /= 2;
g.fillOval(size.width / 4, size.height / 4, ovalSize, ovalSize);

try {
PopupMenu popup = new PopupMenu();
MenuItem miExit = new MenuItem(“Exit”);
ActionListener al;
al = new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println(“Goodbye”);
System.exit(0);
}
};
miExit.addActionListener(al);
popup.add(miExit);

TrayIcon ti = new TrayIcon(bi, “System Tray Demo #2”, popup);

al = new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println(e.getActionCommand());
}
};
ti.setActionCommand(“My Icon”);
ti.addActionListener(al);

MouseListener ml;
ml = 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”);
}
};
ti.addMouseListener(ml);

MouseMotionListener mml;
mml = new MouseMotionListener() {
public void mouseDragged(MouseEvent e) {
System.out.println(“Tray icon: Mouse dragged”);
}

public void mouseMoved(MouseEvent e) {
System.out.println(“Tray icon: Mouse moved”);
}
};
ti.addMouseMotionListener(mml);

tray.add(ti);
} catch (AWTException e) {
System.out.println(e.getMessage());
return;
}
}

}

Thêm Mouse Motion Listener vào Tray Icon

import java.awt.AWTException;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.MenuItem;
import java.awt.PopupMenu;
import java.awt.SystemTray;
import java.awt.TrayIcon;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.awt.image.BufferedImage;

public class SystemTrayDemo2 {
public static void main(String[] args) {
if (!SystemTray.isSupported()) {
return;
}
SystemTray tray = SystemTray.getSystemTray();

Dimension size = tray.getTrayIconSize();
BufferedImage bi = new BufferedImage(size.width, size.height, BufferedImage.TYPE_INT_RGB);
Graphics g = bi.getGraphics();

g.setColor(Color.blue);
g.fillRect(0, 0, size.width, size.height);
g.setColor(Color.yellow);
int ovalSize = (size.width < size.height) ? size.width : size.height;
ovalSize /= 2;
g.fillOval(size.width / 4, size.height / 4, ovalSize, ovalSize);

try {
PopupMenu popup = new PopupMenu();
MenuItem miExit = new MenuItem(“Exit”);
ActionListener al;
al = new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println(“Goodbye”);
System.exit(0);
}
};
miExit.addActionListener(al);
popup.add(miExit);

TrayIcon ti = new TrayIcon(bi, “System Tray Demo #2”, popup);

al = new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println(e.getActionCommand());
}
};
ti.setActionCommand(“My Icon”);
ti.addActionListener(al);

MouseListener ml;
ml = 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”);
}
};
ti.addMouseListener(ml);

MouseMotionListener mml;
mml = new MouseMotionListener() {
public void mouseDragged(MouseEvent e) {
System.out.println(“Tray icon: Mouse dragged”);
}

public void mouseMoved(MouseEvent e) {
System.out.println(“Tray icon: Mouse moved”);
}
};
ti.addMouseMotionListener(mml);

tray.add(ti);
} catch (AWTException e) {
System.out.println(e.getMessage());
return;
}
}

}

3 Responses to “Thêm Mouse listener/Mouse motion listener vào TrayIcon”

  1. LUONGNGOCQUY said

    Thầy ơi thầy có thể cho em hỏi 1 câu được ko ạ!
    Làm sao em kiểm tra được sự tồn tại của 1 form ạ!

    VD EM CÓ 1 FORM LOGIN TRONG ĐÓ CÓ 1 LABEL SẼ NEW 1 FORM REGISTER ĐỂ ĐĂNG KÝ

    LẦN ĐẦU USER CLICK VÀO LABEL ĐÓ THÌ EM SẼ NEW FORM REGISTER

    TRONG FORM REGISTER NẾU USER CLICK VÀO CANCEL HAY NÚT [X] ĐỂ CLOSE THÌ EM SẼ CHO FORM NÀY SETVISIBLE(FALSE) HOẶC DISPOSE NÓ VÌ EM KHÔNG THỂ SET EXIT_ON_CLOSE CHO FORM REGISTER ĐƯỢC VÌ NHƯ THẾ NÓ SẼ DIỆT CẢ CHƯƠNG TRÌNH 😦

    Ý EM MUỐN HỎI THẦY LÀ KHI USER CLICK VÀO LABEL MỞ REGISTER FORM LÊN VÀO NHỮNG LẦN SAU THÌ EM SẼ LÀM THẾ NÀO ĐỂ KIỂM TRA LÀ FORM ĐÓ ĐÃ TỒN TẠI HAY CHƯA , NẾU RỒI MÀ THÌ EM SẼ SETVISIBLE CỦA NÓ THÀNH TRUE LẠI
    CHỨ NẾU MỖI LẦN NGƯỜI DÙNG CLICK VÀO LABEL LẠI NEW FORM REGISTER THÌ SẼ RẤT TỐN BỘ NHỚ.

  2. Võ Văn Hải said

    Bạn dùng DISPOSE_ON_CLOSE

  3. đào duy oánh said

    thày ơi ! 1 sô chương trình em đọc code không hỉu được hết . Thày có thể chú thích code được khộng ak !

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.