{"id":906,"date":"2019-02-17T18:12:55","date_gmt":"2019-02-17T09:12:55","guid":{"rendered":"https:\/\/chat-messenger.com\/?p=906"},"modified":"2019-07-03T00:05:55","modified_gmt":"2019-07-02T15:05:55","slug":"trayicon-blink","status":"publish","type":"post","link":"https:\/\/chat-messenger.com\/vi\/blog\/java\/khayicon-nhap-nhay","title":{"rendered":"Hi\u1ec3n th\u1ecb\/nh\u1ea5p nh\u00e1y bi\u1ec3u t\u01b0\u1ee3ng khay t\u00e1c v\u1ee5 Java"},"content":{"rendered":"<h2><a name=\"0\">b\u1eb1ng Java<strong>khay nhi\u1ec7m v\u1ee5<\/strong>(<strong>khay h\u1ec7 th\u1ed1ng<\/strong>) bi\u1ec3u t\u01b0\u1ee3ng<strong>Hi\u1ec3n th\u1ecb\/nh\u1ea5p nh\u00e1y<\/strong><\/a><\/h2>\n<p>b\u1eb1ng Java<strong>khay nhi\u1ec7m v\u1ee5<\/strong>(<strong>khay h\u1ec7 th\u1ed1ng<\/strong>) \u0111\u01b0\u1ee3c hi\u1ec3n th\u1ecb v\u00e0 nh\u1ea5p nh\u00e1y.<\/p>\n<p>C\u00e1c l\u1edbp ti\u1ec7n \u00edch l\u00e0 c\u00e1c t\u00ednh n\u0103ng m\u1edbi \u0111\u01b0\u1ee3c th\u00eam v\u00e0o trong Java SE 6 Mustang. <strong>java.awt.SystemTray<\/strong> ,<strong>java.awt.TrayIcon<\/strong> S\u1eed d\u1ee5ng c\u00e1c l\u1edbp h\u1ecdc. Ch\u00fang t\u00f4i c\u0169ng s\u1ebd gi\u1edbi thi\u1ec7u m\u1ed9t \u1ee9ng d\u1ee5ng m\u1eabu \u0111\u1ec3 b\u1ea1n c\u00f3 th\u1ec3 hi\u1ec3u c\u00e1ch s\u1eed d\u1ee5ng n\u00f3.<\/p>\n<h3><a name=\"1\">Ch\u1ee9c n\u0103ng khay h\u1ec7 th\u1ed1ng (khay t\u00e1c v\u1ee5)<\/a><\/h3>\n<p>Khay h\u1ec7 th\u1ed1ng (khay t\u00e1c v\u1ee5) l\u00e0 m\u1ed9t d\u00e3y c\u00e1c bi\u1ec3u t\u01b0\u1ee3ng nh\u1ecf n\u1eb1m \u1edf ph\u00eda d\u01b0\u1edbi b\u00ean ph\u1ea3i m\u00e0n h\u00ecnh m\u00e1y t\u00ednh c\u1ee7a b\u1ea1n. Trong Java SE 6, c\u00e1c l\u1edbp sau \u0111\u00e3 \u0111\u01b0\u1ee3c th\u00eam v\u00e0o \u0111\u1ec3 s\u1eed d\u1ee5ng ch\u1ee9c n\u0103ng khay h\u1ec7 th\u1ed1ng.<\/p>\n<ul>\n<li><strong>java.awt.SystemTray<\/strong><br \/>\nL\u1edbp SystemTray \u0111\u1ea1i di\u1ec7n cho khay h\u1ec7 th\u1ed1ng c\u1ee7a m\u00e1y t\u00ednh \u0111\u1ec3 b\u00e0n.<\/li>\n<li><strong>java.awt.TrayIcon<\/strong><br \/>\n\u0110\u1ed1i t\u01b0\u1ee3ng TrayIcon \u0111\u1ea1i di\u1ec7n cho m\u1ed9t bi\u1ec3u t\u01b0\u1ee3ng khay c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c th\u00eam v\u00e0o khay h\u1ec7 th\u1ed1ng.<\/li>\n<\/ul>\n<h3>C\u00e1ch t\u1ea1o bi\u1ec3u t\u01b0\u1ee3ng nh\u1ea5p nh\u00e1y<\/h3>\n<p>B\u1ea1n c\u00f3 th\u1ec3 mu\u1ed1n s\u1eed d\u1ee5ng trang web sau \u0111\u1ec3 t\u1ea1o bi\u1ec3u t\u01b0\u1ee3ng nh\u1ea5p nh\u00e1y.<br \/>T\u1ea1o bi\u1ec3u t\u01b0\u1ee3ng nh\u1ea5p nh\u00e1y b\u1eb1ng c\u00e1ch t\u1ea3i l\u00ean bi\u1ec3u t\u01b0\u1ee3ng c\u1ee5c b\u1ed9.<br \/>\n<a href=\"https:\/\/www.bannerkoubou.com\/anime\/\" target=\"_blank\"><strong>https:\/\/www.bannerkoubou.com\/anime\/<\/strong><\/a><\/p>\n<h2 class=\"common_title\"><a name=\"3\">\u1ee9ng d\u1ee5ng m\u1eabu<\/a><\/h2>\n<p><img src=\"https:\/\/chat-messenger.com\/images\/task_tray.jpg\" alt=\"Khay t\u00e1c v\u1ee5 Khay h\u1ec7 th\u1ed1ng java.awt.SystemTray java.awt.TrayIcon\" border=\"0\"><br \/>\n<br clear=\"all\"><\/p>\n<p>\n\u1ee8ng d\u1ee5ng m\u1eabu s\u1eed d\u1ee5ng l\u1edbp ti\u1ec7n \u00edch khay h\u1ec7 th\u1ed1ng TaskTrayUtil \u0111\u1ec3 tri\u1ec3n khai c\u00e1c ch\u1ee9c n\u0103ng sau.<\/p>\n<ol>\n<li>Khi b\u1eaft \u0111\u1ea7u<strong>khay nhi\u1ec7m v\u1ee5<\/strong>\u0110\u1ebeN<strong>bi\u1ec3u t\u01b0\u1ee3ng<\/strong>Tr\u00ecnh di\u1ec5n.\n<\/li>\n<li>B\u1ea5m v\u00e0o [n\u00fat nh\u1ea5p nh\u00e1y] \u0111\u1ec3<strong>khay nhi\u1ec7m v\u1ee5<\/strong>Bi\u1ec3u t\u01b0\u1ee3ng s\u1ebd nh\u1ea5p nh\u00e1y.<br \/>\n\tBong b\u00f3ng c\u00f2n hi\u1ec3n th\u1ecb th\u00f4ng b\u00e1o &quot;\u0110\u01b0a t\u00f4i ra kh\u1ecfi \u0111\u00e2y!!&quot;<\/li>\n<li>Nh\u1ea5p v\u00e0o [N\u00fat H\u1ee7y] \u0111\u1ec3 h\u1ee7y bi\u1ec3u t\u01b0\u1ee3ng nh\u1ea5p nh\u00e1y.<\/li>\n<li><strong>khay nhi\u1ec7m v\u1ee5<\/strong>Nh\u1ea5p chu\u1ed9t tr\u00e1i v\u00e0o bi\u1ec3u t\u01b0\u1ee3ng \u0111\u1ec3 \u0111\u01b0a c\u1eeda s\u1ed5 ch\u00ednh ra m\u00e0n h\u00ecnh n\u1ec1n.<\/li>\n<li><strong>khay nhi\u1ec7m v\u1ee5<\/strong>Nh\u1ea5p chu\u1ed9t ph\u1ea3i v\u00e0o bi\u1ec3u t\u01b0\u1ee3ng \u0111\u1ec3 hi\u1ec3n th\u1ecb menu PopupMenu m\u1eb7c \u0111\u1ecbnh.<\/li>\n<li>Khi c\u1eeda s\u1ed5 ch\u00ednh \u0111\u01b0\u1ee3c thu nh\u1ecf<strong>khay nhi\u1ec7m v\u1ee5<\/strong>\u0110\u01b0\u1ee3c l\u01b0u tr\u1eef trong.<\/li>\n<\/ol>\n<h2 class=\"common_title\"><a name=\"4\">L\u1ea5y m\u00e3 ngu\u1ed3n<\/a><\/h2>\n<p><script type=\"text\/javascript\" src=\"https:\/\/chat-messenger.com\/js\/common.js?dd12sssas2223\" charset=\"UTF-8\"><\/script><br \/>\n<script type=\"text\/javascript\"> writePR(); <\/script><\/p>\n<p>M\u00e3 ngu\u1ed3n c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c l\u1ea5y t\u1eeb b\u00ean d\u01b0\u1edbi. Ngo\u00e0i ra, khi bi\u00ean d\u1ecbch vui l\u00f2ng l\u01b0u bi\u1ec3u t\u01b0\u1ee3ng sau v\u00e0o c\u00f9ng v\u1ecb tr\u00ed v\u1edbi m\u00e3 ngu\u1ed3n.<\/p>\n<ul>\n<li><strong>Bi\u1ec3u t\u01b0\u1ee3ng b\u00ecnh th\u01b0\u1eddng<\/strong>\u3000<a href=\"https:\/\/chat-messenger.com\/images\/tray_icon.gif\" target=\"_blank\"><img src=\"https:\/\/chat-messenger.com\/images\/tray_icon.gif\" alt=\"\" border=\"0\"><\/a><\/li>\n<li><strong>bi\u1ec3u t\u01b0\u1ee3ng nh\u1ea5p nh\u00e1y<\/strong>\u3000<a href=\"https:\/\/chat-messenger.com\/images\/tray_icon_light.gif\" target=\"_blank\"><img src=\"https:\/\/chat-messenger.com\/images\/tray_icon_light.gif\" alt=\"\" border=\"0\"><\/a><\/li>\n<\/ul>\n<p><textarea readonly=\"readonly\" style=\"font-size: 13px;height: 400px;\" class=\"src\" onclick=\"this.focus();this.select()\">import java.awt.AWTException;<br \/>\nimport java.awt.Dimension;<br \/>\nimport java.awt.FlowLayout;<br \/>\nimport java.awt.Image;<br \/>\nimport java.awt.MenuItem;<br \/>\nimport java.awt.PopupMenu;<br \/>\nimport java.awt.SystemTray;<br \/>\nimport java.awt.TrayIcon;<br \/>\nimport java.awt.event.ActionEvent;<br \/>\nimport java.awt.event.ActionListener;<br \/>\nimport java.awt.event.MouseAdapter;<br \/>\nimport java.awt.event.MouseEvent;<br \/>\nimport java.awt.event.MouseListener;<br \/>\nimport java.awt.event.WindowAdapter;<br \/>\nimport java.awt.event.WindowEvent;<br \/>\nimport java.awt.event.WindowListener;<\/p>\n<p>nh\u1eadp javax.swing.ImageIcon;<br \/>\nnh\u1eadp javax.swing.JButton;<br \/>\nnh\u1eadp javax.swing.JFrame;<br \/>\nnh\u1eadp javax.swing.JPanel;<br \/>\nnh\u1eadp javax.swing.SwingUtilities;<br \/>\nnh\u1eadp javax.swing.UIManager;<\/p>\n<p>\/**<br \/>\n * Hi\u1ec3n th\u1ecb\/nh\u00e1y bi\u1ec3u t\u01b0\u1ee3ng khay t\u00e1c v\u1ee5 (khay h\u1ec7 th\u1ed1ng) trong Java.<br \/>\n *<br \/>\n * \u25c6 T\u1ed5ng quan v\u1ec1 l\u1edbp n\u00e0y<br \/>\n * L\u1edbp TaskTray l\u00e0 m\u1ed9t ti\u1ec7n \u00edch x\u1eed l\u00fd khay t\u00e1c v\u1ee5.<br \/>\n * Cung c\u1ea5p c\u00e1c t\u00ednh n\u0103ng sau:<br \/>\n * \u30fbHi\u1ec3n th\u1ecb bi\u1ec3u t\u01b0\u1ee3ng tr\u00ean khay t\u00e1c v\u1ee5.<br \/>\n * - Hi\u1ec3n th\u1ecb th\u00f4ng b\u00e1o b\u1eadt l\u00ean tr\u00ean khay t\u00e1c v\u1ee5.<br \/>\n * - L\u00e0m cho khay t\u00e1c v\u1ee5 nh\u1ea5p nh\u00e1y.<br \/>\n *<br \/>\n * \u25c6 C\u00e1ch s\u1eed d\u1ee5ng<br \/>\n * Truy\u1ec1n l\u1edbp JFrame \u0111\u00edch cho \u0111\u1ed1i s\u1ed1 ph\u01b0\u01a1ng th\u1ee9c b\u00ean d\u01b0\u1edbi.<br \/>\n * \u30fbcreateTray(JFrame targetFrame)<br \/>\n * \u30fbcreateTray(Khung m\u1ee5c ti\u00eau JFrame cu\u1ed1i c\u00f9ng, H\u00ecnh \u1ea3nh h\u00ecnh \u1ea3nh, menu PopupMenu)<br \/>\n *<br \/>\n *\/<br \/>\nl\u1edbp c\u00f4ng khai TaskTrayUtil {<br \/>\n    khung JFrame t\u0129nh ri\u00eang t\u01b0;<br \/>\n    PopupMenu t\u0129nh ri\u00eang t\u01b0 defaultMenu;<br \/>\n    khayIcon t\u0129nh ri\u00eang t\u01b0 TrayIcon;<br \/>\n    khay SystemTray t\u0129nh ri\u00eang t\u01b0 = SystemTray.getSystemTray();<br \/>\n    \u0110\u1ed1i t\u01b0\u1ee3ng t\u0129nh ri\u00eang INSTANCE_LOCK = \u0110\u1ed1i t\u01b0\u1ee3ng m\u1edbi();<\/p>\n<p>    \/**<br \/>\n     * M\u1eabu th\u1ef1c hi\u1ec7n<br \/>\n     * @param l\u1eadp lu\u1eadn<br \/>\n     *\/<br \/>\n    public static void main(String[] args) {<br \/>\n      th\u1eed {<br \/>\n          \/\/ \u0110\u1eb7t LookAndFeel th\u00e0nh Windows<br \/>\n          UIManager.setLookAndFeel(<br \/>\n                  UIManager.getSystemLookAndFeelClassName());<br \/>\n          \/\/ bi\u1ec3u t\u01b0\u1ee3ng th\u00f4ng th\u01b0\u1eddng<br \/>\n          H\u00ecnh \u1ea3nh cu\u1ed1i c\u00f9ng img = ImageIcon m\u1edbi(<br \/>\n                  TaskTrayUtil.class.getResource(<br \/>\n                          \u201ckhay_icon.gif\u201d)).getImage();<br \/>\n          khung JFrame cu\u1ed1i c\u00f9ng =<br \/>\n              new JFrame(\u201cHi\u1ec3n th\u1ecb\/bi\u1ec3u t\u01b0\u1ee3ng nh\u1ea5p nh\u00e1y trong khay t\u00e1c v\u1ee5\u201d);<br \/>\n          frame.setSize(300, 100);<br \/>\n          frame.setIconImage(img);<br \/>\n          \/\/ L\u01b0u v\u00e0o khay t\u00e1c v\u1ee5 khi c\u1eeda s\u1ed5 \u0111\u01b0\u1ee3c thu nh\u1ecf<br \/>\n          \/\/ Th\u00eam l\u1edbp WindowListener nh\u01b0 h\u00ecnh.<br \/>\n          frame.addWindowListener(new WindowAdapter() {<br \/>\n              public void windowIconified(WindowEvent e) {<br \/>\n                  frame.setVisible(false);<br \/>\n              }<br \/>\n          });<\/p>\n<p>          JPanel jPanel = JPanel m\u1edbi();<br \/>\n          jPanel.setLayout(FlowLayout m\u1edbi());<br \/>\n          jPanel.setSize(K\u00edch th\u01b0\u1edbc m\u1edbi (219, 70));<br \/>\n          \/\/ bi\u1ec3u t\u01b0\u1ee3ng nh\u1ea5p nh\u00e1y<br \/>\n          H\u00ecnh \u1ea3nh cu\u1ed1i c\u00f9ng imgLight =<br \/>\n              ImageIcon m\u1edbi(TaskTrayUtil.class.getResource(<br \/>\n                      \u201ckhay_icon_light.gif\u201d)).getImage();<br \/>\n          JButton lightButton = JButton m\u1edbi(\u201cnh\u1ea5p nh\u00e1y\u201d);<br \/>\n          lightButton.addActionListener(ActionListener m\u1edbi(){<br \/>\n              public void actionPerformed(ActionEvent e) {<br \/>\n                  onAndOffLight(imgLight, null);<br \/>\n                  displayMessage(\u201cTin nh\u1eafn\u201d, \u201c\u0110\u01b0a t\u00f4i ra kh\u1ecfi \u0111\u00e2y!!\u201d);<br \/>\n              }<br \/>\n          });<br \/>\n          JButton cancelButton = JButton m\u1edbi(\u201ch\u1ee7y\u201d);<br \/>\n          cancelButton.addActionListener(ActionListener m\u1edbi(){<br \/>\n              public void actionPerformed(ActionEvent e) {<br \/>\n                  thay th\u1ebfImageWithDelete(img);<br \/>\n              }<br \/>\n          });<br \/>\n          jPanel.add(lightButton, null);<br \/>\n          jPanel.add(cancelButton, null);<br \/>\n          frame.add(jPanel);<br \/>\n          \/\/ K\u1ebft th\u00fac qu\u00e1 tr\u00ecnh x\u1eed l\u00fd.<br \/>\n          frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);<br \/>\n          \/\/ Hi\u1ec3n th\u1ecb frame \u1edf gi\u1eefa m\u00e0n h\u00ecnh.<br \/>\n          frame.setLocationRelativeTo(null);<br \/>\n          \/\/ T\u1ea1o khay t\u00e1c v\u1ee5.<br \/>\n          TaskTrayUtil.createTray(frame);<br \/>\n          frame.setVisible(true);<\/p>\n<p>      } b\u1eaft (Ngo\u1ea1i l\u1ec7 e) {<br \/>\n          e.printStackTrace();<br \/>\n      }<br \/>\n    }<br \/>\n    \/**<br \/>\n     *<br \/>\n     *\/<br \/>\n    t\u0129nh {<br \/>\n        createPopupMenu();<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * T\u1ea1o menu PopupMenu m\u1eb7c \u0111\u1ecbnh \u0111\u1ec3 hi\u1ec3n th\u1ecb trong khay t\u00e1c v\u1ee5.<br \/>\n     *C\u00e1c menu sau c\u00f3 s\u1eb5n.<br \/>\n     * \u30fb &quot;X\u00f3a kh\u1ecfi khay t\u00e1c v\u1ee5&quot;<br \/>\n     * Di chuy\u1ec3n \u1ee9ng d\u1ee5ng \u0111\u00edch t\u1eeb khay t\u00e1c v\u1ee5 sang m\u00e0n h\u00ecnh n\u1ec1n<br \/>\n     * L\u1ea5y n\u00f3 ra.<br \/>\n     * (K\u00edch ho\u1ea1t c\u1eeda s\u1ed5 v\u00e0 \u0111\u01b0a n\u00f3 ra ph\u00eda tr\u01b0\u1edbc.)<br \/>\n     * - Ch\u1ea5m d\u1ee9t \u1ee9ng d\u1ee5ng s\u1ebd b\u1ecb ch\u1ea5m d\u1ee9t.<br \/>\n     *\/<br \/>\n    kho\u1ea3ng tr\u1ed1ng t\u0129nh ri\u00eang createPopupMenu() {<br \/>\n        MenuItem getTrayItem = new MenuItem(\u201cX\u00f3a kh\u1ecfi khay t\u00e1c v\u1ee5\u201d);<br \/>\n        getTrayItem.addActionListener(ActionListener m\u1edbi() {<br \/>\n            public void actionPerformed(ActionEvent e) {<br \/>\n                t\u00edch c\u1ef1c();<br \/>\n            }<br \/>\n        });<br \/>\n        MenuItem exitItem = new MenuItem(\u201cTho\u00e1t\u201d);<br \/>\n        exitItem.addActionListener(ActionListener m\u1edbi() {<br \/>\n            public void actionPerformed(ActionEvent e) {<br \/>\n                lo\u1ea1i b\u1ecfTrayIcon();<br \/>\n                TaskTrayUtil.frame.setVisible(false);<br \/>\n                TaskTrayUtil.frame.dispose();<br \/>\n                System.exit(0);<br \/>\n            }<br \/>\n        });<br \/>\n        defaultMenu = PopupMenu m\u1edbi();<br \/>\n        defaultMenu.add(getTrayItem);<br \/>\n        defaultMenu.add(exitItem);<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * T\u1ea1o bi\u1ec3u t\u01b0\u1ee3ng khay v\u00e0 th\u00eam n\u00f3 v\u00e0o khay h\u1ec7 th\u1ed1ng.<br \/>\n     * \u0110\u1eb7t tr\u00ecnh x\u1eed l\u00fd c\u00e1c s\u1ef1 ki\u1ec7n x\u1ea3y ra tr\u00ean bi\u1ec3u t\u01b0\u1ee3ng th\u00e0nh targetFrame<br \/>\n     \u0110\u1eb7t th\u00e0nh *.<br \/>\n     * S\u1ef1 ki\u1ec7n \u1edf \u0111\u00e2y l\u00e0 khi bi\u1ec3u t\u01b0\u1ee3ng khay \u0111\u01b0\u1ee3c nh\u1ea5p \u0111\u00fap.<br \/>\n     * Gi\u1ea3i n\u00e9n \u1ee9ng d\u1ee5ng m\u1ee5c ti\u00eau.<br \/>\n     * @param targetFrame \u1ee8ng d\u1ee5ng m\u1ee5c ti\u00eau<br \/>\n     *\/<br \/>\n    public static void createTray(JFrame targetFrame) {<br \/>\n        createTray(targetFrame, null, null);<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * T\u1ea1o bi\u1ec3u t\u01b0\u1ee3ng khay v\u00e0 th\u00eam n\u00f3 v\u00e0o khay h\u1ec7 th\u1ed1ng.<br \/>\n     *<br \/>\n     * @param targetFrame \u1ee8ng d\u1ee5ng m\u1ee5c ti\u00eau<br \/>\n     * @param image H\u00ecnh \u1ea3nh h\u00ecnh \u1ea3nh \u0111\u1ec3 hi\u1ec3n th\u1ecb tr\u00ean bi\u1ec3u t\u01b0\u1ee3ng khay.<br \/>\n     * N\u1ebfu null, n\u00f3 c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c l\u1ea5y t\u1eeb targetFrame b\u1eb1ng getIconImage()<br \/>\n     * S\u1eed d\u1ee5ng h\u00ecnh \u1ea3nh h\u00ecnh \u1ea3nh.<br \/>\n     * @param menu PopupMenu \u0111\u1ec3 hi\u1ec3n th\u1ecb tr\u00ean khay t\u00e1c v\u1ee5.<br \/>\n     * N\u1ebfu null, hi\u1ec3n th\u1ecb PopupMenu m\u1eb7c \u0111\u1ecbnh.<br \/>\n     *\/<br \/>\n    public static void createTray(Final JFrame targetFrame, H\u00ecnh \u1ea3nh h\u00ecnh \u1ea3nh,<br \/>\n            Tr\u00ecnh \u0111\u01a1n PopupMenu) {<br \/>\n        \/\/ Tho\u00e1t n\u1ebfu khay h\u1ec7 th\u1ed1ng kh\u00f4ng \u0111\u01b0\u1ee3c h\u1ed7 tr\u1ee3.<br \/>\n        if (!SystemTray.isSupported()) {<br \/>\n            tr\u1edf l\u1ea1i;<br \/>\n        }<br \/>\n        TaskTrayUtil.frame = targetFrame;<br \/>\n        n\u1ebfu (h\u00ecnh \u1ea3nh == null) {<br \/>\n            h\u00ecnh \u1ea3nh = targetFrame.getIconImage();<br \/>\n        }<br \/>\n        n\u1ebfu (menu == null) {<br \/>\n            menu = defaultMenu;<br \/>\n        }<br \/>\n        khayIcon = new TrayIcon(image, targetFrame.getTitle(), menu);<br \/>\n        khayIcon.setImageAutoSize(true);<br \/>\n        khayIcon.addMouseListener(MouseAdapter m\u1edbi(){<br \/>\n            public void mouseClicked(MouseEvent e) {<br \/>\n                if (SwingUtilities.isLeftMouseButton(e)) {<br \/>\n                    t\u00edch c\u1ef1c();<br \/>\n                }<br \/>\n            }<br \/>\n        });<br \/>\n        th\u1eed {<br \/>\n            khay.add(khayIcon);<br \/>\n        } b\u1eaft (AWTException e1) {<br \/>\n            e1.printStackTrace();<br \/>\n        }<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * X\u00f3a bi\u1ec3u t\u01b0\u1ee3ng kh\u1ecfi khay t\u00e1c v\u1ee5.<br \/>\n     * Ph\u1ea3i \u0111\u01b0\u1ee3c g\u1ecdi khi \u1ee9ng d\u1ee5ng tho\u00e1t.<br \/>\n     *\/<br \/>\n    kho\u1ea3ng tr\u1ed1ng t\u0129nh c\u00f4ng khai lo\u1ea1i b\u1ecfTrayIcon() {<br \/>\n        khay.remove(khayIcon);<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * L\u00e0m cho bi\u1ec3u t\u01b0\u1ee3ng khay t\u00e1c v\u1ee5 nh\u1ea5p nh\u00e1y.<br \/>\n     * @param msg n\u1ebfu c\u1ea7n thi\u1ebft khi nh\u1ea5p v\u00e0o bi\u1ec3u t\u01b0\u1ee3ng nh\u1ea5p nh\u00e1y<br \/>\n     * \u0110\u1eb7t tin nh\u1eafn \u0111\u1ec3 hi\u1ec3n th\u1ecb.<br \/>\n     *\/<br \/>\n    public static void onAndOffLight(Image lightImg, String msg) {<br \/>\n        thay th\u1ebfImage(lightImg);<br \/>\n        ChangeLightImgAdapter th\u00edch \u1ee9ng =<br \/>\n            TaskTrayUtil m\u1edbi().New ChangeLightImgAdapter(tin nh\u1eafn);<br \/>\n        khayIcon.addMouseListener(adap);<br \/>\n        frame.addWindowListener(adap);<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * Thay \u0111\u1ed5i bi\u1ec3u t\u01b0\u1ee3ng khay t\u00e1c v\u1ee5.<br \/>\n     * H\u00ecnh \u1ea3nh @param Ch\u1ec9 thay \u0111\u1ed5i n\u1ebfu n\u00f3 kh\u00e1c v\u1edbi bi\u1ec3u t\u01b0\u1ee3ng hi\u1ec7n t\u1ea1i.<br \/>\n     *\/<br \/>\n    public static void thay th\u1ebfImage(H\u00ecnh \u1ea3nh) {<br \/>\n        \u0111\u00e3 \u0111\u1ed3ng b\u1ed9 h\u00f3a (INSTANCE_LOCK) {<br \/>\n            if (!image.equals(trayIcon.getImage())) {<br \/>\n                khayIcon.setImage(h\u00ecnh \u1ea3nh);<br \/>\n            }<br \/>\n        }<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * Thay \u0111\u1ed5i bi\u1ec3u t\u01b0\u1ee3ng khay t\u00e1c v\u1ee5.<br \/>\n     * *N\u1ebfu b\u1ea1n mu\u1ed1n kh\u00f4i ph\u1ee5c bi\u1ec3u t\u01b0\u1ee3ng \u0111ang nh\u1ea5p nh\u00e1y v\u00ec l\u00fd do n\u00e0o \u0111\u00f3,<br \/>\n     * N\u00f3 d\u01b0\u1eddng nh\u01b0 v\u00f4 d\u1ee5ng tr\u1eeb khi b\u1ea1n x\u00f3a n\u00f3 b\u1eb1ng {@link SystemTray#remove(TrayIcon)}).<br \/>\n     * H\u00ecnh \u1ea3nh @param Ch\u1ec9 thay \u0111\u1ed5i n\u1ebfu n\u00f3 kh\u00e1c v\u1edbi bi\u1ec3u t\u01b0\u1ee3ng hi\u1ec7n t\u1ea1i.<br \/>\n     *\/<br \/>\n    public static void thay th\u1ebfImageWithDelete(H\u00ecnh \u1ea3nh h\u00ecnh \u1ea3nh) {<br \/>\n        \u0111\u00e3 \u0111\u1ed3ng b\u1ed9 h\u00f3a (INSTANCE_LOCK) {<br \/>\n            if (!image.equals(trayIcon.getImage())) {<br \/>\n                khay.remove(khayIcon);<br \/>\n                khayIcon.setImage(h\u00ecnh \u1ea3nh);<br \/>\n                th\u1eed {<br \/>\n                    khay.add(khayIcon);<br \/>\n                } b\u1eaft (Ngo\u1ea1i l\u1ec7 e) {<br \/>\n                    e.printStackTrace();<br \/>\n                }<br \/>\n            }<br \/>\n        }<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * Hi\u1ec3n th\u1ecb m\u1ed9t th\u00f4ng b\u00e1o b\u1eadt l\u00ean trong khay t\u00e1c v\u1ee5.<br \/>\n     * ch\u00fa th\u00edch @param<br \/>\n     * v\u0103n b\u1ea3n @param<br \/>\n     *\/<br \/>\n    public static void displayMessage(Ch\u00fa th\u00edch chu\u1ed7i, V\u0103n b\u1ea3n chu\u1ed7i) {<br \/>\n        if (ch\u00fa th\u00edch != null || v\u0103n b\u1ea3n != null) {<br \/>\n            khayIcon.displayMessage(ch\u00fa th\u00edch, v\u0103n b\u1ea3n,<br \/>\n                    TrayIcon.MessageType.INFO);<br \/>\n        }<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * Di chuy\u1ec3n \u1ee9ng d\u1ee5ng \u0111\u00edch t\u1eeb khay t\u00e1c v\u1ee5 sang m\u00e0n h\u00ecnh n\u1ec1n<br \/>\n     * L\u1ea5y n\u00f3 ra.<br \/>\n     *\/<br \/>\n    kho\u1ea3ng tr\u1ed1ng t\u0129nh ri\u00eang t\u01b0 \u0111ang ho\u1ea1t \u0111\u1ed9ng() {<br \/>\n        \/\/ \u0110\u01b0a tr\u1ea1ng th\u00e1i khung v\u1ec1 b\u00ecnh th\u01b0\u1eddng.<br \/>\n        TaskTrayUtil.frame.setExtendsState(JFrame.NORMAL);<br \/>\n        TaskTrayUtil.frame.setAlwaysOnTop(true);<br \/>\n        TaskTrayUtil.frame.setVisible(true);<br \/>\n        TaskTrayUtil.frame.setAlwaysOnTop(false);<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * S\u1ef1 ki\u1ec7n \u0111\u01b0\u1ee3c t\u1ea1o khi nh\u1ea5p v\u00e0o bi\u1ec3u t\u01b0\u1ee3ng nh\u1ea5p nh\u00e1y<br \/>\n     * L\u1edbp ng\u01b0\u1eddi nghe.<br \/>\n     *\/<br \/>\n    l\u1edbp ChangeLightImgAdapter tri\u1ec3n khai WindowListener, MouseListener {<br \/>\n        Chu\u1ed7i lightImageText;<\/p>\n<p>        public ChangeLightImgAdapter(String lightImageText) {<br \/>\n            this.lightImageText = lightImageText;<br \/>\n        }<\/p>\n<p>        \/**<br \/>\n         * Khi nh\u1ea5p v\u00e0o bi\u1ec3u t\u01b0\u1ee3ng khay t\u00e1c v\u1ee5<br \/>\n         * Hi\u1ec3n th\u1ecb th\u00f4ng b\u00e1o b\u1eadt l\u00ean.<br \/>\n         *\/<br \/>\n        public void mousePressed(MouseEvent e) {<br \/>\n            TaskTrayUtil.displayMessage(null, lightImageText);<br \/>\n        }<\/p>\n<p>        \/**<br \/>\n         * Nh\u1ea5p nh\u00e1y khi \u1ee9ng d\u1ee5ng m\u1ee5c ti\u00eau ho\u1ea1t \u0111\u1ed9ng<br \/>\n         * Bi\u1ec3u t\u01b0\u1ee3ng tr\u1edf l\u1ea1i.<br \/>\n         *\/<br \/>\n        public void windowActivated(WindowEvent e) {<br \/>\n            TaskTrayUtil.replaceImageWithDelete(TaskTrayUtil.frame<br \/>\n                    .getIconImage());<br \/>\n            TaskTrayUtil.frame.removeWindowListener(this);<br \/>\n            TaskTrayUtil.trayIcon.removeMouseListener(this);<br \/>\n        }<\/p>\n<p>        public void windowClosed(WindowEvent e) {}<\/p>\n<p>        public void windowClosing(WindowEvent e) {}<\/p>\n<p>        public void windowDeactivated(WindowEvent e) {}<\/p>\n<p>        public void windowDeiconified(WindowEvent e) {}<\/p>\n<p>        public void windowIconified(WindowEvent e) {}<\/p>\n<p>        public void windowOpened(WindowEvent e) {}<\/p>\n<p>        public void mouseClicked(MouseEvent e) {}<\/p>\n<p>        public void mouseEntered(MouseEvent e) {}<\/p>\n<p>        public void mouseExit(MouseEvent e) {}<\/p>\n<p>        public void mouseRelease(MouseEvent e) {}<br \/>\n    }<br \/>\n}<br \/>\n<\/textarea><\/p>","protected":false},"excerpt":{"rendered":"<p>Hi\u1ec3n th\u1ecb\/nh\u00e1y bi\u1ec3u t\u01b0\u1ee3ng khay t\u00e1c v\u1ee5 (khay h\u1ec7 th\u1ed1ng) trong Java [\u2026]<\/p>","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"swell_btn_cv_data":""},"categories":[19],"tags":[],"_links":{"self":[{"href":"https:\/\/chat-messenger.com\/vi\/wp-json\/wp\/v2\/posts\/906"}],"collection":[{"href":"https:\/\/chat-messenger.com\/vi\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/chat-messenger.com\/vi\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/chat-messenger.com\/vi\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/chat-messenger.com\/vi\/wp-json\/wp\/v2\/comments?post=906"}],"version-history":[{"count":14,"href":"https:\/\/chat-messenger.com\/vi\/wp-json\/wp\/v2\/posts\/906\/revisions"}],"predecessor-version":[{"id":3679,"href":"https:\/\/chat-messenger.com\/vi\/wp-json\/wp\/v2\/posts\/906\/revisions\/3679"}],"wp:attachment":[{"href":"https:\/\/chat-messenger.com\/vi\/wp-json\/wp\/v2\/media?parent=906"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/chat-messenger.com\/vi\/wp-json\/wp\/v2\/categories?post=906"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/chat-messenger.com\/vi\/wp-json\/wp\/v2\/tags?post=906"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}