{"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":"khayicon-nhap-nhay","status":"publish","type":"post","link":"https:\/\/chat-messenger.com\/vi\/blog\/java\/trayicon-blink","title":{"rendered":"Hi\u1ec3n th\u1ecb\/nh\u1ea5p nh\u00e1y bi\u1ec3u t\u01b0\u1ee3ng Java tr\u00ean thanh t\u00e1c v\u1ee5"},"content":{"rendered":"<h2><a name=\"0\">Trong Java<strong>Khay t\u00e1c v\u1ee5<\/strong>\uff08<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>Trong Java<strong>Khay t\u00e1c v\u1ee5<\/strong>\uff08<strong>khay h\u1ec7 th\u1ed1ng<\/strong>Ph\u1ea7n n\u00e0y gi\u1edbi thi\u1ec7u m\u1ed9t l\u1edbp ti\u1ec7n \u00edch \u0111\u1ec3 hi\u1ec3n th\u1ecb v\u00e0 nh\u1ea5p nh\u00e1y bi\u1ec3u t\u01b0\u1ee3ng ).<\/p>\n<p>C\u00e1c l\u1edbp ti\u1ec7n \u00edch \u0111\u00e3 \u0111\u01b0\u1ee3c th\u00eam v\u00e0o nh\u01b0 m\u1ed9t t\u00ednh n\u0103ng m\u1edbi trong Java SE 6 Mustang. <strong>java.awt.SystemTray<\/strong> \u3001<strong>java.awt.TrayIcon<\/strong> Ch\u00fang ta s\u1ebd s\u1eed d\u1ee5ng m\u1ed9t l\u1edbp. M\u1ed9t \u1ee9ng d\u1ee5ng m\u1eabu c\u0169ng s\u1ebd \u0111\u01b0\u1ee3c cung c\u1ea5p \u0111\u1ec3 gi\u00fap b\u1ea1n hi\u1ec3u c\u00e1ch s\u1eed d\u1ee5ng.<\/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 t\u1eadp h\u1ee3p c\u00e1c bi\u1ec3u t\u01b0\u1ee3ng nh\u1ecf \u0111\u01b0\u1ee3c s\u1eafp x\u1ebfp \u1edf g\u00f3c d\u01b0\u1edbi b\u00ean ph\u1ea3i m\u00e0n h\u00ecnh m\u00e1y t\u00ednh. Java SE 6 \u0111\u00e3 b\u1ed5 sung c\u00e1c l\u1edbp sau \u0111\u1ec3 k\u00edch ho\u1ea1t 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 tr\u00ean m\u00e0n h\u00ecnh m\u00e1y t\u00ednh.<\/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 h\u1ec7 th\u1ed1ng 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 s\u1eed d\u1ee5ng trang web sau \u0111\u1ec3 t\u1ea1o bi\u1ec3u t\u01b0\u1ee3ng nh\u1ea5p nh\u00e1y.<br \/>T\u1ea3i l\u00ean bi\u1ec3u t\u01b0\u1ee3ng c\u1ee5c b\u1ed9 \u0111\u1ec3 t\u1ea1o bi\u1ec3u t\u01b0\u1ee3ng nh\u1ea5p nh\u00e1y.<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\">V\u00ed d\u1ee5 \u1ee9ng d\u1ee5ng<\/a><\/h2>\n<p><img decoding=\"async\" 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 th\u1ef1c hi\u1ec7n c\u00e1c ch\u1ee9c n\u0103ng sau:<\/p>\n<ol>\n<li>Khi b\u1ea1n kh\u1edfi \u0111\u1ed9ng n\u00f3<strong>Khay t\u00e1c v\u1ee5<\/strong>\u306b<strong>bi\u1ec3u t\u01b0\u1ee3ng<\/strong>Tr\u01b0ng b\u00e0y.\n<\/li>\n<li>Nh\u1ea5p v\u00e0o [n\u00fat nh\u1ea5p nh\u00e1y] s\u1ebd<strong>Khay t\u00e1c v\u1ee5<\/strong>L\u00e0m cho bi\u1ec3u t\u01b0\u1ee3ng nh\u1ea5p nh\u00e1y.<br \/>\n\tTr\u00ean m\u1ed9t qu\u1ea3 b\u00f3ng bay c\u0169ng hi\u1ec3n th\u1ecb d\u00f2ng ch\u1eef &quot;H\u00e3y th\u1ea3 t\u00f4i ra kh\u1ecfi \u0111\u00e2y!!&quot;<\/li>\n<li>Nh\u1ea5n v\u00e0o n\u00fat [T\u1eaft] s\u1ebd khi\u1ebfn bi\u1ec3u t\u01b0\u1ee3ng ng\u1eebng nh\u1ea5p nh\u00e1y.<\/li>\n<li><strong>Khay t\u00e1c v\u1ee5<\/strong>Nh\u1ea5p chu\u1ed9t tr\u00e1i m\u1ed9t l\u1ea7n v\u00e0o bi\u1ec3u t\u01b0\u1ee3ng \u0111\u1ec3 \u0111\u01b0a c\u1eeda s\u1ed5 ch\u00ednh l\u00ean m\u00e0n h\u00ecnh n\u1ec1n.<\/li>\n<li><strong>Khay t\u00e1c v\u1ee5<\/strong>Nh\u1ea5p chu\u1ed9t ph\u1ea3i v\u00e0o bi\u1ec3u t\u01b0\u1ee3ng \u0111\u1ec3 hi\u1ec3n th\u1ecb menu b\u1eadt l\u00ean m\u1eb7c \u0111\u1ecbnh.<\/li>\n<li>Khi c\u1eeda s\u1ed5 ch\u00ednh \u0111\u01b0\u1ee3c thu nh\u1ecf<strong>Khay t\u00e1c v\u1ee5<\/strong>\u0110\u01b0\u1ee3c l\u01b0u tr\u1eef t\u1ea1i.<\/li>\n<\/ol>\n<h2 class=\"common_title\"><a name=\"4\">Thu th\u1eadp 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 t\u1ea3i xu\u1ed1ng t\u1eeb \u0111\u1ecba \u0111i\u1ec3m sau. N\u1ebfu b\u1ea1n mu\u1ed1n bi\u00ean d\u1ecbch, vui l\u00f2ng l\u01b0u th\u00eam 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 th\u00f4ng th\u01b0\u1eddng<\/strong>\u3000<a href=\"https:\/\/chat-messenger.com\/images\/tray_icon.gif\" target=\"_blank\"><img decoding=\"async\" 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 decoding=\"async\" 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>import javax.swing.ImageIcon;<br \/>\nimport javax.swing.JButton;<br \/>\nimport javax.swing.JFrame;<br \/>\nimport javax.swing.JPanel;<br \/>\nimport javax.swing.SwingUtilities;<br \/>\nimport javax.swing.UIManager;<\/p>\n<p>\/**<br \/>\n * Hi\u1ec3n th\u1ecb v\u00e0 nh\u1ea5p nh\u00e1y bi\u1ec3u t\u01b0\u1ee3ng khay t\u00e1c v\u1ee5 (khay h\u1ec7 th\u1ed1ng) b\u1eb1ng Java.<br \/>\n *<br \/>\n * \u25c6 T\u1ed5ng quan v\u1ec1 l\u1edbp h\u1ecdc n\u00e0y<br \/>\n * L\u1edbp TaskTray l\u00e0 m\u1ed9t ti\u1ec7n \u00edch \u0111\u1ec3 x\u1eed l\u00fd khay t\u00e1c v\u1ee5.<br \/>\n * C\u00e1c t\u00ednh n\u0103ng sau \u0111\u00e2y \u0111\u01b0\u1ee3c cung c\u1ea5p:<br \/>\n * Hi\u1ec3n th\u1ecb bi\u1ec3u t\u01b0\u1ee3ng trong khay h\u1ec7 th\u1ed1ng.<br \/>\n * M\u1ed9t th\u00f4ng b\u00e1o b\u1eadt l\u00ean s\u1ebd xu\u1ea5t hi\u1ec7n trong 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 m\u1ee5c ti\u00eau l\u00e0m \u0111\u1ed1i s\u1ed1 cho ph\u01b0\u01a1ng th\u1ee9c sau.<br \/>\n * \u30fbcreateTray(JFrame targetFrame)<br \/>\n * \u30fbcreateTray(final JFrame targetFrame, Image image, PopupMenu menu)<br \/>\n *<br \/>\n *\/<br \/>\npublic class TaskTrayUtil {<br \/>\n    privatestatic JFrame frame;<br \/>\n    private static PopupMenu defaultMenu;<br \/>\n    private static TrayIcon trayIcon;<br \/>\n    private static SystemTray tray = SystemTray.getSystemTray();<br \/>\n    private static Object INSTANCE_LOCK = new Object();<\/p>\n<p>    \/**<br \/>\n     * V\u00ed d\u1ee5 th\u1ef1c thi<br \/>\n     * @param args<br \/>\n     *\/<br \/>\n    public static void main(String[] args) {<br \/>\n      th\u1eed {<br \/>\n          \/\/ \u0110\u1eb7t giao di\u1ec7n ng\u01b0\u1eddi d\u00f9ng th\u00e0nh Windows<br \/>\n          UIManager.setLookAndFeel(<br \/>\n                  UIManager.getSystemLookAndFeelClassName());<br \/>\n          \/\/ Bi\u1ec3u t\u01b0\u1ee3ng ti\u00eau chu\u1ea9n<br \/>\n          final Image img = new ImageIcon(<br \/>\n                  TaskTrayUtil.class.getResource(<br \/>\n                          \u201ctray_icon.gif\u201d)).getImage();<br \/>\n          khung JFrame cu\u1ed1i c\u00f9ng =<br \/>\n              new JFrame(&quot;Hi\u1ec3n th\u1ecb v\u00e0 nh\u1ea5p nh\u00e1y bi\u1ec3u t\u01b0\u1ee3ng trong khay t\u00e1c v\u1ee5&quot;);<br \/>\n          frame.setSize(300, 100);<br \/>\n          frame.setIconImage(img);<br \/>\n          \/\/ Thu nh\u1ecf c\u1eeda s\u1ed5 xu\u1ed1ng khay h\u1ec7 th\u1ed1ng khi n\u00f3 \u0111\u01b0\u1ee3c thu nh\u1ecf.<br \/>\n          \/\/ Th\u00eam l\u1edbp WindowListener nh\u01b0 h\u00ecnh minh h\u1ecda.<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 = new JPanel();<br \/>\n          jPanel.setLayout(new FlowLayout());<br \/>\n          jPanel.setSize(new Dimension(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              new ImageIcon(TaskTrayUtil.class.getResource(<br \/>\n                      \u201ctray_icon_light.gif\u201d)).getImage();<br \/>\n          JButton lightButton = new JButton(&#8220;\u70b9\u6ec5&#8221;);<br \/>\n          lightButton.addActionListener(new ActionListener(){<br \/>\n              public void actionPerformed(ActionEvent e) {<br \/>\n                  onAndOffLight(imgLight, null);<br \/>\n                  displayMessage(&quot;Th\u00f4ng b\u00e1o&quot;, &quot;H\u00e3y th\u1ea3 t\u00f4i ra kh\u1ecfi \u0111\u00e2y!!&quot;);<br \/>\n              }<br \/>\n          });<br \/>\n          JButton cancelButton = new JButton(&#8220;\u89e3\u9664&#8221;);<br \/>\n          cancelButton.addActionListener(new ActionListener(){<br \/>\n              public void actionPerformed(ActionEvent e) {<br \/>\n                  replaceImageWithDelete(img);<br \/>\n              }<br \/>\n          });<br \/>\n          jPanel.add(lightButton, null);<br \/>\n          jPanel.add(cancelButton, null);<br \/>\n          frame.add(jPanel);<br \/>\n          \/\/ X\u1eed l\u00fd cu\u1ed1i chu k\u1ef3.<br \/>\n          frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);<br \/>\n          \/\/ Hi\u1ec3n th\u1ecb khung h\u00ecnh \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>      } catch (Exception 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 m\u00f3n \u0103n sau \u0111\u00e2y hi\u1ec7n c\u00f3 s\u1eb5n.<br \/>\n     * X\u00f3a kh\u1ecfi thanh t\u00e1c v\u1ee5<br \/>\n     * G\u1ee1 b\u1ecf \u1ee9ng d\u1ee5ng c\u1ea7n nh\u1eafm m\u1ee5c ti\u00eau kh\u1ecfi thanh t\u00e1c v\u1ee5 v\u00e0 \u0111\u01b0a n\u00f3 l\u00ean 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 l\u00ean ph\u00eda tr\u01b0\u1edbc.)<br \/>\n     * Thao t\u00e1c n\u00e0y s\u1ebd ch\u1ea5m d\u1ee9t \u1ee9ng d\u1ee5ng c\u1ea7n \u0111\u00f3ng.<br \/>\n     *\/<br \/>\n    private static void createPopupMenu() {<br \/>\n        MenuItem getTrayItem = new MenuItem(&#8220;\u30bf\u30b9\u30af\u30c8\u30ec\u30a4\u304b\u3089\u53d6\u308a\u51fa\u3059&#8221;);<br \/>\n        getTrayItem.addActionListener(new ActionListener() {<br \/>\n            public void actionPerformed(ActionEvent e) {<br \/>\n                t\u00edch c\u1ef1c();<br \/>\n            }<br \/>\n        });<br \/>\n        MenuItem exitItem = new MenuItem(&#8220;\u7d42\u4e86&#8221;);<br \/>\n        exitItem.addActionListener(new ActionListener() {<br \/>\n            public void actionPerformed(ActionEvent e) {<br \/>\n                removeTrayIcon();<br \/>\n                TaskTrayUtil.frame.setVisible(false);<br \/>\n                TaskTrayUtil.frame.dispose();<br \/>\n                System.exit(0);<br \/>\n            }<br \/>\n        });<br \/>\n        defaultMenu = new PopupMenu();<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 h\u1ec7 th\u1ed1ng v\u00e0 th\u00eam n\u00f3 v\u00e0o khay h\u1ec7 th\u1ed1ng.<br \/>\n     * C\u00e1c tr\u00ecnh l\u1eafng nghe s\u1ef1 ki\u1ec7n x\u1ea3y ra tr\u00ean bi\u1ec3u t\u01b0\u1ee3ng \u0111\u01b0\u1ee3c \u0111\u1eb7t th\u00e0nh targetFrame<br \/>\n     \u0110\u1eb7t th\u00e0nh *.<br \/>\n     * S\u1ef1 ki\u1ec7n n\u00e0y x\u1ea3y ra khi bi\u1ec3u t\u01b0\u1ee3ng tr\u00ean khay h\u1ec7 th\u1ed1ng \u0111\u01b0\u1ee3c nh\u1ea5p \u0111\u00fap.<br \/>\n     * Truy xu\u1ea5t \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 h\u1ec7 th\u1ed1ng 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 hi\u1ec3n th\u1ecb l\u00e0m bi\u1ec3u t\u01b0\u1ee3ng khay h\u1ec7 th\u1ed1ng.<br \/>\n     * N\u1ebfu l\u00e0 null, n\u00f3 c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c l\u1ea5y t\u1eeb targetFrame b\u1eb1ng c\u00e1ch s\u1eed d\u1ee5ng getIconImage().<br \/>\n     * H\u00ecnh \u1ea3nh \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng ch\u1ec9 nh\u1eb1m m\u1ee5c \u0111\u00edch minh h\u1ecda.<br \/>\n     * @param menu Menu b\u1eadt l\u00ean \u0111\u1ec3 hi\u1ec3n th\u1ecb trong khay t\u00e1c v\u1ee5.<br \/>\n     * N\u1ebfu l\u00e0 null, menu b\u1eadt l\u00ean m\u1eb7c \u0111\u1ecbnh s\u1ebd \u0111\u01b0\u1ee3c hi\u1ec3n th\u1ecb.<br \/>\n     *\/<br \/>\n    public static void createTray(final JFrame targetFrame, Image image,<br \/>\n            Menu b\u1eadt l\u00ean (PopupMenu) {<br \/>\n        \/\/ Tho\u00e1t n\u1ebfu khay h\u1ec7 th\u1ed1ng kh\u00f4ng \u0111\u01b0\u1ee3c h\u1ed7 tr\u1ee3.<br \/>\n        n\u1ebfu (!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            image = targetFrame.getIconImage();<br \/>\n        }<br \/>\n        n\u1ebfu (menu == null) {<br \/>\n            menu = defaultMenu;<br \/>\n        }<br \/>\n        trayIcon = new TrayIcon(image, targetFrame.getTitle(), menu);<br \/>\n        trayIcon.setImageAutoSize(true);<br \/>\n        trayIcon.addMouseListener(new MouseAdapter(){<br \/>\n            public void mouseClicked(MouseEvent e) {<br \/>\n                n\u1ebfu (SwingUtilities.isLeftMouseButton(e)) {<br \/>\n                    t\u00edch c\u1ef1c();<br \/>\n                }<br \/>\n            }<br \/>\n        });<br \/>\n        th\u1eed {<br \/>\n            tray.add(trayIcon);<br \/>\n        } catch (AWTException e1) {<br \/>\n            e1.printStackTrace();<br \/>\n        }<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * X\u00f3a bi\u1ec3u t\u01b0\u1ee3ng kh\u1ecfi thanh t\u00e1c v\u1ee5.<br \/>\n     * H\u00e0m n\u00e0y ph\u1ea3i \u0111\u01b0\u1ee3c g\u1ecdi khi \u1ee9ng d\u1ee5ng k\u1ebft th\u00fac.<br \/>\n     *\/<br \/>\n    public static void removeTrayIcon() {<br \/>\n        tray.remove(trayIcon);<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * L\u00e0m cho bi\u1ec3u t\u01b0\u1ee3ng tr\u00ean thanh t\u00e1c v\u1ee5 nh\u1ea5p nh\u00e1y.<br \/>\n     * @param msg N\u1ebfu c\u1ea7n, khi bi\u1ec3u t\u01b0\u1ee3ng nh\u1ea5p nh\u00e1y \u0111\u01b0\u1ee3c nh\u1ea5p v\u00e0o<br \/>\n     * Thi\u1ebft l\u1eadp th\u00f4ng b\u00e1o hi\u1ec3n th\u1ecb.<br \/>\n     *\/<br \/>\n    public static void onAndOffLight(Image lightImg, String msg) {<br \/>\n        replaceImage(lightImg);<br \/>\n        ChangeLightImgAdapter adap =<br \/>\n            new TaskTrayUtil().new ChangeLightImgAdapter(msg);<br \/>\n        trayIcon.addMouseListener(adap);<br \/>\n        frame.addWindowListener(adap);<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * Thay \u0111\u1ed5i bi\u1ec3u t\u01b0\u1ee3ng tr\u00ean thanh t\u00e1c v\u1ee5.<br \/>\n     * @param image Ch\u1ec9 thay \u0111\u1ed5i n\u1ebfu bi\u1ec3u t\u01b0\u1ee3ng kh\u00e1c v\u1edbi bi\u1ec3u t\u01b0\u1ee3ng hi\u1ec7n t\u1ea1i.<br \/>\n     *\/<br \/>\n    public static void replaceImage(Image image) {<br \/>\n        \u0111\u1ed3ng b\u1ed9 (INSTANCE_LOCK) {<br \/>\n            n\u1ebfu (!image.equals(trayIcon.getImage())) {<br \/>\n                trayIcon.setImage(image);<br \/>\n            }<br \/>\n        }<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * Thay \u0111\u1ed5i bi\u1ec3u t\u01b0\u1ee3ng tr\u00ean thanh t\u00e1c v\u1ee5.<br \/>\n     * N\u1ebfu bi\u1ec3u t\u01b0\u1ee3ng nh\u1ea5p nh\u00e1y v\u00ec l\u00fd do n\u00e0o \u0111\u00f3,<br \/>\n     C\u00f3 v\u1ebb nh\u01b0 c\u1ea7n ph\u1ea3i x\u00f3a n\u00f3 b\u1eb1ng c\u00e1ch s\u1eed d\u1ee5ng {@link SystemTray#remove(TrayIcon)}).<br \/>\n     * @param image Ch\u1ec9 thay \u0111\u1ed5i n\u1ebfu bi\u1ec3u t\u01b0\u1ee3ng kh\u00e1c v\u1edbi bi\u1ec3u t\u01b0\u1ee3ng hi\u1ec7n t\u1ea1i.<br \/>\n     *\/<br \/>\n    public static void replaceImageWithDelete(Image image) {<br \/>\n        \u0111\u1ed3ng b\u1ed9 (INSTANCE_LOCK) {<br \/>\n            n\u1ebfu (!image.equals(trayIcon.getImage())) {<br \/>\n                tray.remove(trayIcon);<br \/>\n                trayIcon.setImage(image);<br \/>\n                th\u1eed {<br \/>\n                    tray.add(trayIcon);<br \/>\n                } catch (Exception e) {<br \/>\n                    e.printStackTrace();<br \/>\n                }<br \/>\n            }<br \/>\n        }<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * M\u1ed9t th\u00f4ng b\u00e1o b\u1eadt l\u00ean s\u1ebd xu\u1ea5t hi\u1ec7n tr\u00ean thanh t\u00e1c v\u1ee5.<br \/>\n     * @param caption<br \/>\n     * @param text<br \/>\n     *\/<br \/>\n    public static void displayMessage(String caption, String text) {<br \/>\n        if (caption != null || text != null) {<br \/>\n            trayIcon.displayMessage(caption, text,<br \/>\n                    TrayIcon.MessageType.INFO);<br \/>\n        }<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * G\u1ee1 b\u1ecf \u1ee9ng d\u1ee5ng c\u1ea7n nh\u1eafm m\u1ee5c ti\u00eau kh\u1ecfi thanh t\u00e1c v\u1ee5 v\u00e0 \u0111\u01b0a n\u00f3 l\u00ean m\u00e0n h\u00ecnh n\u1ec1n.<br \/>\n     * L\u1ea5y n\u00f3 ra.<br \/>\n     *\/<br \/>\n    private static void active() {<br \/>\n        \/\/ Kh\u00f4i ph\u1ee5c tr\u1ea1ng th\u00e1i khung h\u00ecnh 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 s\u1ebd \u0111\u01b0\u1ee3c k\u00edch ho\u1ea1t khi bi\u1ec3u t\u01b0\u1ee3ng nh\u1ea5p nh\u00e1y \u0111\u01b0\u1ee3c nh\u1ea5p chu\u1ed9t.<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 bi\u1ec3u t\u01b0\u1ee3ng khay t\u00e1c v\u1ee5 \u0111\u01b0\u1ee3c nh\u1ea5p v\u00e0o<br \/>\n         * Hi\u1ec3n th\u1ecb th\u00f4ng b\u00e1o d\u1ea1ng c\u1eeda s\u1ed5 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         * \u0110\u00e8n nh\u1ea5p nh\u00e1y khi \u1ee9ng d\u1ee5ng m\u1ee5c ti\u00eau \u0111\u01b0\u1ee3c k\u00edch ho\u1ea1t.<br \/>\n         * Kh\u00f4i ph\u1ee5c bi\u1ec3u t\u01b0\u1ee3ng.<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 mouseExited(MouseEvent e) {}<\/p>\n<p>        public void mouseReleased(MouseEvent e) {}<br \/>\n    }<br \/>\n}<br \/>\n<\/textarea><\/p>","protected":false},"excerpt":{"rendered":"<p>Java\u3067\u30bf\u30b9\u30af\u30c8\u30ec\u30a4\uff08\u30b7\u30b9\u30c6\u30e0\u30c8\u30ec\u30a4\uff09\u306e\u30a2\u30a4\u30b3\u30f3\u3092\u8868\u793a\u30fb\u70b9\u6ec5 Java\u3067\u30bf\u30b9\u30af\u30c8\u30ec\u30a4\uff08\u30b7\u30b9\u30c6\u30e0\u30c8\u30ec\u30a4\uff09\u306e\u30a2\u30a4 [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"swell_btn_cv_data":"","footnotes":""},"categories":[19],"tags":[],"class_list":["post-906","post","type-post","status-publish","format-standard","hentry","category-java"],"_links":{"self":[{"href":"https:\/\/chat-messenger.com\/vi\/wp-json\/wp\/v2\/posts\/906","targetHints":{"allow":["GET"]}}],"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":"trang web","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}