{"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\/ko\/blog\/java\/trayicon-blink","title":{"rendered":"Java \uc791\uc5c5 \ud2b8\ub808\uc774 \uc544\uc774\ucf58 \ud45c\uc2dc \ubc0f \uae5c\ubc15\uc784"},"content":{"rendered":"<h2><a name=\"0\">Java\uc5d0\uc11c<strong>\uc791\uc5c5 \ud2b8\ub808\uc774<\/strong>(<strong>\uc2dc\uc2a4\ud15c \ud2b8\ub808\uc774<\/strong>) \uc544\uc774\ucf58<strong>\ud45c\uc2dc\u30fb\uc810\uba78<\/strong><\/a><\/h2>\n<p>Java\uc5d0\uc11c<strong>\uc791\uc5c5 \ud2b8\ub808\uc774<\/strong>(<strong>\uc2dc\uc2a4\ud15c \ud2b8\ub808\uc774<\/strong>)\uc758 \uc544\uc774\ucf58\uc744 \ud45c\uc2dc\u30fb\uc810\uba78\uc2dc\ud0a4\ub294 \uc720\ud2f8\ub9ac\ud2f0 \ud074\ub798\uc2a4\ub97c \uc18c\uac1c\ud569\ub2c8\ub2e4.<\/p>\n<p>\uc720\ud2f8\ub9ac\ud2f0 \ud074\ub798\uc2a4\ub294 Java SE 6 Mustang\uc5d0\uc11c \uc0c8\ub85c\uc6b4 \uae30\ub2a5\uc73c\ub85c \ucd94\uac00\ub418\uc5c8\uc2b5\ub2c8\ub2e4. <strong>java.awt.SystemTray<\/strong> ,,,<strong>java.awt.TrayIcon<\/strong> \ud074\ub798\uc2a4\ub97c \uc0ac\uc6a9\ud569\ub2c8\ub2e4. \uc0ac\uc6a9\ubc95\uc744 \uc54c \uc218 \uc788\ub3c4\ub85d \uc0d8\ud50c \uc560\ud50c\ub9ac\ucf00\uc774\uc158\ub3c4 \ud568\uaed8 \uc18c\uac1c\ud569\ub2c8\ub2e4.<\/p>\n<h3><a name=\"1\">\uc2dc\uc2a4\ud15c \ud2b8\ub808\uc774(\uc791\uc5c5 \ud2b8\ub808\uc774) \uae30\ub2a5<\/a><\/h3>\n<p>\uc2dc\uc2a4\ud15c \ud2b8\ub808\uc774(\uc791\uc5c5 \ud2b8\ub808\uc774)\ub294 \ucef4\ud4e8\ud130 \ud654\uba74\uc758 \uc624\ub978\ucabd \ud558\ub2e8\uc5d0 \uc788\ub294 \uc791\uc740 \uc544\uc774\ucf58\uc785\ub2c8\ub2e4. Java SE 6\uc5d0\uc11c\ub294 \uc2dc\uc2a4\ud15c \ud2b8\ub808\uc774 \uae30\ub2a5\uc744 \uc774\uc6a9\ud558\uae30 \uc704\ud574\uc11c \ub2e4\uc74c\uc758 \ud074\ub798\uc2a4\uac00 \ucd94\uac00\ub418\uc5c8\uc2b5\ub2c8\ub2e4.<\/p>\n<ul>\n<li><strong>java.awt.SystemTray<\/strong><br \/>\nSystemTray \ud074\ub798\uc2a4\ub294 \ub370\uc2a4\ud06c\ud1b1\uc758 \uc2dc\uc2a4\ud15c \ud2b8\ub808\uc774\ub97c \ub098\ud0c0\ub0c5\ub2c8\ub2e4.<\/li>\n<li><strong>java.awt.TrayIcon<\/strong><br \/>\nTrayIcon \uac1d\uccb4\ub294 \uc2dc\uc2a4\ud15c \ud2b8\ub808\uc774\uc5d0 \ucd94\uac00\ud560 \uc218 \uc788\ub294 \ud2b8\ub808\uc774 \uc544\uc774\ucf58\uc744 \ub098\ud0c0\ub0c5\ub2c8\ub2e4.<\/li>\n<\/ul>\n<h3>\uae5c\ubc15\uc784 \uc544\uc774\ucf58\uc744 \ub9cc\ub4dc\ub294 \ubc29\ubc95<\/h3>\n<p>\uae5c\ubc15\uc784 \uc544\uc774\ucf58\uc744 \ub9cc\ub4e4\ub824\uba74 \ub2e4\uc74c \uc0ac\uc774\ud2b8\ub97c \uc0ac\uc6a9\ud558\ub294 \uac83\uc774 \uc88b\uc2b5\ub2c8\ub2e4.<br \/>\ub85c\uceec\uc5d0 \uc788\ub294 \uc544\uc774\ucf58\uc744 \uc5c5\ub85c\ub4dc\ud558\uc5ec \uae5c\ubc15\uc784 \uc544\uc774\ucf58\uc744 \ub9cc\ub4ed\ub2c8\ub2e4.<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\">\uc0d8\ud50c \uc560\ud50c\ub9ac\ucf00\uc774\uc158<\/a><\/h2>\n<p><img src=\"https:\/\/chat-messenger.com\/images\/task_tray.jpg\" alt=\"\uc791\uc5c5 \ud2b8\ub808\uc774 \uc2dc\uc2a4\ud15c \ud2b8\ub808\uc774 java.awt.SystemTray java.awt.TrayIcon\" border=\"0\"><br \/>\n<br clear=\"all\"><\/p>\n<p>\n\uc0d8\ud50c \uc5b4\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0\uc11c\ub294 \uc2dc\uc2a4\ud15c \ud2b8\ub808\uc774 \uc720\ud2f8\ub9ac\ud2f0 \ud074\ub798\uc2a4 TaskTrayUtil \ub97c \uc0ac\uc6a9\ud574 \uc774\ud558\uc758 \uae30\ub2a5\uc744 \uad6c\ud604\ud569\ub2c8\ub2e4.<\/p>\n<ol>\n<li>\uc2dc\uc791\ud558\uba74<strong>\uc791\uc5c5 \ud2b8\ub808\uc774<\/strong>\uc5d0<strong>\uc544\uc774\ucf58<\/strong>\ud45c\uc2dc.\n<\/li>\n<li>\u3010\uc810\uba78 \ubc84\ud2bc\u3011\uc744 \ud074\ub9ad\ud558\uba74,<strong>\uc791\uc5c5 \ud2b8\ub808\uc774<\/strong>\uc544\uc774\ucf58\uc744 \uae5c\ubc15\uc785\ub2c8\ub2e4.<br \/>\n\t\ub610\ud55c \ud48d\uc120\uc5d0\uc11c &quot;\uc5ec\uae30\uc5d0\uc11c \ub0b4 \uc918!&quot;\uba54\uc2dc\uc9c0\ub97c \ud45c\uc2dc.<\/li>\n<li>\u3010\ud574\uc81c \ubc84\ud2bc\u3011\uc744 \ud074\ub9ad\ud558\uba74 \uc544\uc774\ucf58 \uc810\uba78\uc744 \ud574\uc81c\ud55c\ub2e4.<\/li>\n<li><strong>\uc791\uc5c5 \ud2b8\ub808\uc774<\/strong>\uc758 \uc544\uc774\ucf58\uc744 \uc67c\ucabd \uc2f1\uae00 \ud074\ub9ad\uc73c\ub85c \uba54\uc778 \uc708\ub3c4\uc6b0\ub97c \ubc14\ud0d5 \ud654\uba74\uc5d0 \uaebc\ub0c5\ub2c8\ub2e4.<\/li>\n<li><strong>\uc791\uc5c5 \ud2b8\ub808\uc774<\/strong>\uc544\uc774\ucf58\uc744 \ub9c8\uc6b0\uc2a4 \uc624\ub978\ucabd \ubc84\ud2bc\uc73c\ub85c \ud074\ub9ad\ud558\uba74 \uae30\ubcf8 PopupMenu \uba54\ub274\uac00 \ud45c\uc2dc\ub429\ub2c8\ub2e4.<\/li>\n<li>\uba54\uc778 \uc708\ub3c4\uc6b0\uac00 \ucd5c\uc18c\ud654\ub418\uba74<strong>\uc791\uc5c5 \ud2b8\ub808\uc774<\/strong>\uc5d0 \uc800\uc7a5.<\/li>\n<\/ol>\n<h2 class=\"common_title\"><a name=\"4\">\uc18c\uc2a4 \ucf54\ub4dc \ucde8\ub4dd<\/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>\uc18c\uc2a4 \ucf54\ub4dc\ub294 \ub2e4\uc74c\uc5d0\uc11c \uc5bb\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub610\ud55c \ucef4\ud30c\uc77c\ud558\ub294 \uacbd\uc6b0 \uc18c\uc2a4 \ucf54\ud1a0\ub4dc\uc640 \uac19\uc740 \uc704\uce58\uc5d0 \ub2e4\uc74c \uc544\uc774\ucf58\uc744 \uc800\uc7a5\ud558\uc2ed\uc2dc\uc624.<\/p>\n<ul>\n<li><strong>\uc77c\ubc18 \uc544\uc774\ucf58<\/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>\uae5c\ubc15\uc784 \uc544\uc774\ucf58<\/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>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 * Java\ub85c \uc791\uc5c5 \ud2b8\ub808\uc774 (\uc2dc\uc2a4\ud15c \ud2b8\ub808\uc774) \uc544\uc774\ucf58\uc744 \ud45c\uc2dc \u00b7 \uc810\uba78.<br \/>\n *<br \/>\n * \u25c6 \uc774 \ud074\ub798\uc2a4\uc758 \uac1c\uc694<br \/>\n * TaskTray \ud074\ub798\uc2a4\ub294 \ud0dc\uc2a4\ud06c \ud2b8\ub808\uc774\ub97c \ucde8\uae09\ud558\ub294 \uc720\ud2f8\ub9ac\ud2f0\ub85c\uc11c,<br \/>\n * \ub2e4\uc74c \uae30\ub2a5\uc744 \uc81c\uacf5\ud569\ub2c8\ub2e4.<br \/>\n * \u00b7 \uc791\uc5c5 \ud2b8\ub808\uc774\uc5d0 \uc544\uc774\ucf58\uc744 \ud45c\uc2dc\ud569\ub2c8\ub2e4.<br \/>\n * \u00b7 \uc791\uc5c5 \ud2b8\ub808\uc774\uc5d0 \ud31d\uc5c5 \uba54\uc2dc\uc9c0\ub97c \ud45c\uc2dc\ud569\ub2c8\ub2e4.<br \/>\n * \u00b7 \uc791\uc5c5 \ud2b8\ub808\uc774\ub97c \uae5c\ubc15\uc785\ub2c8\ub2e4.<br \/>\n *<br \/>\n * \u25c6 \uc0ac\uc6a9\ubc95<br \/>\n * \uc774\ud558\uc758 \uba54\uc18c\ub4dc \uc778\uc218\uc5d0 \ub300\uc0c1\uc758 JFrame \ud074\ub798\uc2a4\ub97c \uac74\ub124\uc90d\ub2c8\ub2e4.<br \/>\n * \u00b7 createTray (JFrame targetFrame)<br \/>\n * \u00b7 createTray (final JFrame targetFrame, Image image, PopupMenu menu)<br \/>\n *<br \/>\n *\/<br \/>\npublic class TaskTrayUtil {<br \/>\n    private static 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     * \uc2e4\ud589 \uc0d8\ud50c<br \/>\n     * @param args<br \/>\n     *\/<br \/>\n    public static void main(String[] args) {<br \/>\n      try {<br \/>\n          \/\/ LookAndFeel\uc744 Windows\ub85c \uc124\uc815<br \/>\n          UIManager.setLookAndFeel (<br \/>\n                  UIManager.getSystemLookAndFeelClassName());<br \/>\n          \/\/ \uc77c\ubc18 \uc544\uc774\ucf58<br \/>\n          final Image img = new ImageIcon (<br \/>\n                  TaskTrayUtil.class.getResource (<br \/>\n                          &quot;tray_icon.gif&quot;)).getImage();<br \/>\n          final JFrame frame =<br \/>\n              new JFrame ( &quot;\uc791\uc5c5 \ud2b8\ub808\uc774\uc5d0 \uc544\uc774\ucf58 \ud45c\uc2dc \/ \uae5c\ubc15\uc784&quot;);<br \/>\n          frame.setSize(300, 100);<br \/>\n          frame.setIconImage(img);<br \/>\n          \/\/ \ucc3d\uc774 \ucd5c\uc18c\ud654 \ub420 \ub54c \uc791\uc5c5 \ud2b8\ub808\uc774\uc5d0 \uc800\uc7a5<br \/>\n          \/\/ \uc640 \uac19\uc774 WindowListener \ud074\ub798\uc2a4\ub97c \ucd94\uac00.<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          \/\/ \uae5c\ubc15\uc784 \uc544\uc774\ucf58<br \/>\n          final Image imgLight =<br \/>\n              new ImageIcon (TaskTrayUtil.class.getResource (<br \/>\n                      \u201ctray_icon_light.gif\u201d)).getImage();<br \/>\n          JButton lightButton = new JButton(&quot;\uae5c\ubc15\uc784&quot;);<br \/>\n          lightButton.addActionListener(new ActionListener(){<br \/>\n              public void actionPerformed (ActionEvent e) {<br \/>\n                  onAndOffLight(imgLight, null);<br \/>\n                  displayMessage(\u201c\uba54\uc2dc\uc9c0\u201d, \u201c\uc5ec\uae30\uc5d0\uc11c \ub0b4\uc918!\u201d);<br \/>\n              }<br \/>\n          });<br \/>\n          JButton cancelButton = new JButton(&quot;\ud574\uc81c&quot;);<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          \/\/ \uc885\ub8cc\uc2dc \ucc98\ub9ac.<br \/>\n          frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);<br \/>\n          \/\/ \ud504\ub808\uc784\uc744 \ud654\uba74 \uc911\uc559\uc5d0 \ud45c\uc2dc.<br \/>\n          frame.setLocationRelativeTo (null);<br \/>\n          \/\/ \uc791\uc5c5 \ud2b8\ub808\uc774\ub97c \ub9cc\ub4ed\ub2c8\ub2e4.<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    static {<br \/>\n        createPopupMenu();<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * \uc791\uc5c5 \ud2b8\ub808\uc774\uc5d0 \ud45c\uc2dc\ud560 \uae30\ubcf8 PopupMenu \uba54\ub274\ub97c \uc0dd\uc131\ud569\ub2c8\ub2e4.<br \/>\n     * \ub2e4\uc74c \uba54\ub274\uac00 \uc788\uc2b5\ub2c8\ub2e4.<br \/>\n     * \u00b7 &quot;\uc791\uc5c5 \ud2b8\ub808\uc774\uc5d0\uc11c \uaebc\ub0b4\uae30&quot;<br \/>\n     * \uc791\uc5c5 \ud2b8\ub808\uc774\uc5d0\uc11c \ub300\uc0c1 \uc751\uc6a9 \ud504\ub85c\uadf8\ub7a8\uc744 \ubc14\ud0d5 \ud654\uba74\uc5d0<br \/>\n     * \uaebc\ub0c5\ub2c8\ub2e4.<br \/>\n     * (\ucc3d\uc744 \ud65c\uc131\ud654\ud558\uace0 \uc55e\uc5d0 \ud45c\uc2dc\ud569\ub2c8\ub2e4.)<br \/>\n     * \u30fb\uc885\ub8cc \ub300\uc0c1\uc758 \uc5b4\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \uc885\ub8cc\uc2dc\ud0b5\ub2c8\ub2e4.<br \/>\n     *\/<br \/>\n    private static void createPopupMenu() {<br \/>\n        MenuItem getTrayItem = new MenuItem(\u201c\ud0dc\uc2a4\ud06c \ud2b8\ub808\uc774\ub85c\ubd80\ud130 \uaebc\ub0b8\ub2e4\u201d);<br \/>\n        getTrayItem.addActionListener(new ActionListener() {<br \/>\n            public void actionPerformed (ActionEvent e) {<br \/>\n                active();<br \/>\n            }<br \/>\n        });<br \/>\n        MenuItem exitItem = new MenuItem(\u201c\uc885\ub8cc\u201d);<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     * \ud2b8\ub808\uc774 \uc544\uc774\ucf58\uc744 \ub9cc\ub4e4\uace0 \uc2dc\uc2a4\ud15c \ud2b8\ub808\uc774\uc5d0 \ucd94\uac00\ud569\ub2c8\ub2e4.<br \/>\n     * \uc544\uc774\ucf58\uc0c1\uc5d0\uc11c \ubc1c\uc0dd\ud55c \uc774\ubca4\ud2b8\uc5d0 \ub300\ud55c \ub9ac\uc2a4\ub108\ub97c targetFrame<br \/>\n     * \ub85c \uc124\uc815\ud569\ub2c8\ub2e4.<br \/>\n     * \uc5ec\uae30\uc11c \uc774\ubca4\ud2b8\ub294 \ud2b8\ub808\uc774 \uc544\uc774\ucf58\uc744 \ub354\ube14 \ud074\ub9ad\ud588\uc744 \ub54c<br \/>\n     * \ub300\uc0c1 \uc751\uc6a9 \ud504\ub85c\uadf8\ub7a8\uc744 \uac80\uc0c9\ud569\ub2c8\ub2e4.<br \/>\n     * @param targetFrame \ub300\uc0c1 \uc751\uc6a9 \ud504\ub85c\uadf8\ub7a8<br \/>\n     *\/<br \/>\n    public static void createTray (JFrame targetFrame) {<br \/>\n        createTray(targetFrame, null, null);<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * \ud2b8\ub808\uc774 \uc544\uc774\ucf58\uc744 \ub9cc\ub4e4\uace0 \uc2dc\uc2a4\ud15c \ud2b8\ub808\uc774\uc5d0 \ucd94\uac00\ud569\ub2c8\ub2e4.<br \/>\n     *<br \/>\n     * @param targetFrame \ub300\uc0c1 \uc751\uc6a9 \ud504\ub85c\uadf8\ub7a8<br \/>\n     * @param image \ud2b8\ub808\uc774 \uc544\uc774\ucf58\uc5d0 \ud45c\uc2dc\ub418\ub294 \uc774\ubbf8\uc9c0 \uc774\ubbf8\uc9c0.<br \/>\n     * null\uc758 \uacbd\uc6b0, targetFrame \ub85c\ubd80\ud130 getIconImage()\ub85c \ucde8\ub4dd\ud560 \uc218 \uc788\ub2e4<br \/>\n     * \uc774\ubbf8\uc9c0 \uc774\ubbf8\uc9c0\ub97c \uc0ac\uc6a9\ud569\ub2c8\ub2e4.<br \/>\n     * @param menu \ud0dc\uc2a4\ud06c \ud2b8\ub808\uc774\uc5d0 \ud45c\uc2dc\ud558\ub294 PopupMenu.<br \/>\n     * null\uc758 \uacbd\uc6b0, \ub514\ud3f4\ud2b8\uc758 PopupMenu\ub97c \ud45c\uc2dc\ud569\ub2c8\ub2e4.<br \/>\n     *\/<br \/>\n    public static void createTray (final JFrame targetFrame, Image image,<br \/>\n            PopupMenu menu) {<br \/>\n        \/\/ \uc2dc\uc2a4\ud15c \ud2b8\ub808\uc774\uac00 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc73c\uba74 \uc885\ub8cc.<br \/>\n        if (!SystemTray.isSupported()) {<br \/>\n            return;<br \/>\n        }<br \/>\n        TaskTrayUtil.frame=targetFrame;<br \/>\n        if (image == null) {<br \/>\n            image = targetFrame.getIconImage();<br \/>\n        }<br \/>\n        if (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                if (SwingUtilities.isLeftMouseButton(e)) {<br \/>\n                    active();<br \/>\n                }<br \/>\n            }<br \/>\n        });<br \/>\n        try {<br \/>\n            tray.add(trayIcon);<br \/>\n        } catch (AWTException e1) {<br \/>\n            e1.printStackTrace();<br \/>\n        }<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * \uc791\uc5c5 \ud2b8\ub808\uc774\uc5d0\uc11c \uc544\uc774\ucf58\uc744 \uc0ad\uc81c\ud569\ub2c8\ub2e4.<br \/>\n     * \uc5b4\ud50c\ub9ac\ucf00\uc774\uc158 \uc885\ub8cc\uc2dc\uc5d0 \ud638\ucd9c\ud560 \ud544\uc694\uac00 \uc788\ub2e4.<br \/>\n     *\/<br \/>\n    public static void removeTrayIcon() {<br \/>\n        tray.remove(trayIcon);<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * \uc791\uc5c5 \ud2b8\ub808\uc774 \uc544\uc774\ucf58\uc744 \uae5c\ubc15\uc785\ub2c8\ub2e4.<br \/>\n     * @param msg \ud544\uc694\ud55c \uacbd\uc6b0 \uae5c\ubc15\uc774\ub294 \uc544\uc774\ucf58\uc744 \ud074\ub9ad\ud588\uc744 \ub54c<br \/>\n     * \ud45c\uc2dc\ud560 \uba54\uc2dc\uc9c0\ub97c \uc124\uc815\ud569\ub2c8\ub2e4.<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     * \uc791\uc5c5 \ud2b8\ub808\uc774 \uc544\uc774\ucf58\uc744 \ubcc0\uacbd\ud569\ub2c8\ub2e4.<br \/>\n     * @param image \ud604\uc7ac \uc544\uc774\ucf58\uacfc \ub2e4\ub978 \uacbd\uc6b0\uc5d0\ub9cc \ubcc0\uacbd\ud569\ub2c8\ub2e4.<br \/>\n     *\/<br \/>\n    public static void replaceImage(Image image) {<br \/>\n        synchronized (INSTANCE_LOCK) {<br \/>\n            if (!image.equals(trayIcon.getImage())) {<br \/>\n                trayIcon.setImage(image);<br \/>\n            }<br \/>\n        }<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * \uc791\uc5c5 \ud2b8\ub808\uc774 \uc544\uc774\ucf58\uc744 \ubcc0\uacbd\ud569\ub2c8\ub2e4.<br \/>\n     * \u203b\uc660\uc9c0 \uc810\uba78\ud558\uace0 \uc788\ub294 \uc544\uc774\ucf58\uc744 \ub418\ub3cc\ub9ac\ub294 \uacbd\uc6b0\ub294,<br \/>\n     * {@link SystemTray#remove(TrayIcon)})\uc5d0\uc11c \uc0ad\uc81c\ud558\uc9c0 \uc54a\uc73c\uba74 \uc548\ub418\ub294 \uac83 \uac19\ub2e4.<br \/>\n     * @param image \ud604\uc7ac \uc544\uc774\ucf58\uacfc \ub2e4\ub978 \uacbd\uc6b0\uc5d0\ub9cc \ubcc0\uacbd\ud569\ub2c8\ub2e4.<br \/>\n     *\/<br \/>\n    public static void replaceImageWithDelete (Image image) {<br \/>\n        synchronized (INSTANCE_LOCK) {<br \/>\n            if (!image.equals(trayIcon.getImage())) {<br \/>\n                tray.remove(trayIcon);<br \/>\n                trayIcon.setImage(image);<br \/>\n                try {<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     * \uc791\uc5c5 \ud2b8\ub808\uc774\uc5d0 \ud31d\uc5c5 \uba54\uc2dc\uc9c0\ub97c \ud45c\uc2dc\ud569\ub2c8\ub2e4.<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     * \uc791\uc5c5 \ud2b8\ub808\uc774\uc5d0\uc11c \ub300\uc0c1 \uc751\uc6a9 \ud504\ub85c\uadf8\ub7a8\uc744 \ubc14\ud0d5 \ud654\uba74\uc5d0<br \/>\n     * \uaebc\ub0c5\ub2c8\ub2e4.<br \/>\n     *\/<br \/>\n    private static void active() {<br \/>\n        \/\/ \ud504\ub808\uc784 \uc0c1\ud0dc\ub97c \uc815\uc0c1\uc73c\ub85c \ub418\ub3cc\ub9bd\ub2c8\ub2e4.<br \/>\n        TaskTrayUtil.frame.setExtendedState(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     * \uae5c\ubc15\uc774\ub294 \uc544\uc774\ucf58\uc774 \ud074\ub9ad\ub418\uc5c8\uc744 \ub54c \ubc1c\uc0dd\ud558\ub294 \uc774\ubca4\ud2b8<br \/>\n     * Listener \ud074\ub798\uc2a4.<br \/>\n     *\/<br \/>\n    class ChangeLightImgAdapter implements WindowListener, MouseListener {<br \/>\n        String lightImageText;<\/p>\n<p>        public ChangeLightImgAdapter (String lightImageText) {<br \/>\n            this.lightImageText = lightImageText;<br \/>\n        }<\/p>\n<p>        \/**<br \/>\n         * \uc791\uc5c5 \ud2b8\ub808\uc774 \uc544\uc774\ucf58\uc774 \ud074\ub9ad\ub418\uc5c8\uc744 \ub54c<br \/>\n         * \ud31d\uc5c5 \uba54\uc2dc\uc9c0\ub97c \ud45c\uc2dc\ud569\ub2c8\ub2e4.<br \/>\n         *\/<br \/>\n        public void mousePressed (MouseEvent e) {<br \/>\n            TaskTrayUtil.displayMessage(null, lightImageText);<br \/>\n        }<\/p>\n<p>        \/**<br \/>\n         * \ub300\uc0c1 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc774 \ud65c\uc131\ud654\ub420 \ub54c \uae5c\ubc15\uc784<br \/>\n         * \uc544\uc774\ucf58\uc744 \ubc18\ud658\ud569\ub2c8\ub2e4.<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\uc5d0\uc11c \ud0dc\uc2a4\ud06c \ud2b8\ub808\uc774(\uc2dc\uc2a4\ud15c \ud2b8\ub808\uc774)\uc758 \uc544\uc774\ucf58\uc744 \ud45c\uc2dc\u00b7\uc810\uba78 Java\ub85c \ud0dc\uc2a4\ud06c \ud2b8\ub808\uc774(\uc2dc\uc2a4\ud15c \ud2b8\ub808\uc774)\uc758 \uc544\uc774 [\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\/ko\/wp-json\/wp\/v2\/posts\/906"}],"collection":[{"href":"https:\/\/chat-messenger.com\/ko\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/chat-messenger.com\/ko\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/chat-messenger.com\/ko\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/chat-messenger.com\/ko\/wp-json\/wp\/v2\/comments?post=906"}],"version-history":[{"count":14,"href":"https:\/\/chat-messenger.com\/ko\/wp-json\/wp\/v2\/posts\/906\/revisions"}],"predecessor-version":[{"id":3679,"href":"https:\/\/chat-messenger.com\/ko\/wp-json\/wp\/v2\/posts\/906\/revisions\/3679"}],"wp:attachment":[{"href":"https:\/\/chat-messenger.com\/ko\/wp-json\/wp\/v2\/media?parent=906"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/chat-messenger.com\/ko\/wp-json\/wp\/v2\/categories?post=906"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/chat-messenger.com\/ko\/wp-json\/wp\/v2\/tags?post=906"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}