{"id":1649,"date":"2026-03-20T11:16:15","date_gmt":"2026-03-20T11:16:15","guid":{"rendered":"https:\/\/wayhope.kro.kr\/?p=1649"},"modified":"2026-08-31T07:32:35","modified_gmt":"2026-08-31T07:32:35","slug":"swing-%ea%b0%9c%eb%b0%9c-%ed%95%b5%ec%8b%ac-%ec%a0%95%eb%a6%ac","status":"publish","type":"post","link":"https:\/\/wayhope.kro.kr\/?p=1649","title":{"rendered":"Swing \uac1c\ubc1c \ud575\uc2ec \uc815\ub9ac"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Java\ub85c \ub370\uc2a4\ud06c\ud1b1 GUI\ub97c \uac1c\ubc1c\ud560 \ub54c \uc0ac\uc6a9\ud558\ub294 \ub300\ud45c\uc801\uc778 \uae30\uc220 \uc911 \ud558\ub098\uac00 Swing\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ucd5c\uadfc \uc2e0\uaddc \ud504\ub85c\uc81d\ud2b8\uc5d0\uc11c \uc8fc\ub825\uc73c\ub85c \uc120\ud0dd\ub418\ub294 \uae30\uc220\uc740 \uc544\ub2c8\uc9c0\ub9cc, Java \uae30\ubc18 \ub808\uac70\uc2dc \ub370\uc2a4\ud06c\ud1b1 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \uc720\uc9c0\ubcf4\uc218\ud558\uac70\ub098 \uae30\uc874 \ucf54\ub4dc\ub97c \ubd84\uc11d\ud574\uc57c \ud55c\ub2e4\uba74 \uc5ec\uc804\ud788 \uc811\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Swing\uc744 \uc774\ud574\ud560 \ub54c \uc911\uc694\ud55c \uac83\uc740 <code>JButton<\/code>\uc774\ub098 <code>JTextField<\/code> \uac19\uc740 \ucef4\ud3ec\ub10c\ud2b8\uc758 \uc0ac\uc6a9\ubc95\uc744 \uc678\uc6b0\ub294 \uac83\uc774 \uc544\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\uc0ac\uc6a9\uc790 \uc785\ub825 -&gt; \uc774\ubca4\ud2b8 -&gt; \uc0c1\ud0dc \ubcc0\uacbd -&gt; UI \ubc18\uc601<\/strong>\uc774\ub77c\ub294 GUI \ud504\ub85c\uadf8\ub7a8\uc758 \uae30\ubcf8 \uad6c\uc870\uc640, \uc774 \uacfc\uc815\uc774 <strong>EDT(Event Dispatch Thread)<\/strong> \uc704\uc5d0\uc11c \uc5b4\ub5bb\uac8c \ub3d9\uc791\ud558\ub294\uc9c0\ub97c \uc774\ud574\ud558\ub294 \uac83\uc774 \ud575\uc2ec\uc774\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Swing\uc774\ub780<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Swing\uc740 Java\uc5d0\uc11c \ub370\uc2a4\ud06c\ud1b1 GUI\ub97c \ub9cc\ub4e4\uae30 \uc704\ud55c GUI \ub77c\uc774\ube0c\ub7ec\ub9ac\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ubc84\ud2bc, \ud14d\uc2a4\ud2b8 \uc785\ub825\ucc3d, \uccb4\ud06c\ubc15\uc2a4, \ud14c\uc774\ube14, \uba54\ub274 \ub4f1 \ub2e4\uc591\ud55c UI \ucef4\ud3ec\ub10c\ud2b8\ub97c \uc81c\uacf5\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uac04\ub2e8\ud55c Swing \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc740 <code>JFrame<\/code>\uc744 \ub9cc\ub4e4\uace0 \uadf8 \uc548\uc5d0 \ucef4\ud3ec\ub10c\ud2b8\ub97c \ubc30\uce58\ud558\ub294 \ud615\ud0dc\ub85c \uad6c\uc131\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import javax.swing.*;\n\npublic class Main {\n    public static void main(String&#91;] args) {\n        JFrame frame = new JFrame(\"Swing Example\");\n\n        JButton button = new JButton(\"Click\");\n        frame.add(button);\n\n        frame.setSize(400, 300);\n        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);\n        frame.setVisible(true);\n    }\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><code>JFrame<\/code>\uc740 \ucd5c\uc0c1\uc704 \uc708\ub3c4\uc6b0 \uc5ed\ud560\uc744 \ud558\uace0, <code>JPanel<\/code>\uc740 \uc5ec\ub7ec \ucef4\ud3ec\ub10c\ud2b8\ub97c \ubb36\ub294 \ucee8\ud14c\uc774\ub108 \uc5ed\ud560\uc744 \ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc804\uccb4 \uad6c\uc870\ub294 \ub2e4\uc74c\ucc98\ub7fc \ubcfc \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>JFrame -&gt; Container \/ JPanel \/ JLabel \/ JButton \/ JTextField \/ JTable\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc2e4\uc81c \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0\uc11c\ub294 <code>JFrame<\/code> \ud558\ub098\uc5d0 \ubaa8\ub4e0 \ucef4\ud3ec\ub10c\ud2b8\ub97c \uc9c1\uc811 \ub123\uae30\ubcf4\ub2e4 \uc5ec\ub7ec <code>JPanel<\/code>\ub85c \ud654\uba74\uc744 \ub098\ub204\ub294 \uacbd\uc6b0\uac00 \ub9ce\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\uc8fc\uc694 \ucef4\ud3ec\ub10c\ud2b8<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Swing\uc5d0\ub294 \ub2e4\uc591\ud55c UI \ucef4\ud3ec\ub10c\ud2b8\uac00 \uc874\uc7ac\ud558\uc9c0\ub9cc \uae30\ubcf8\uc801\uc73c\ub85c \ub2e4\uc74c \uc815\ub3c4\ub97c \uc54c\uc544\ub450\uba74 \ub41c\ub2e4.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\ucef4\ud3ec\ub10c\ud2b8<\/th><th>\uc6a9\ub3c4<\/th><\/tr><\/thead><tbody><tr><td><code>JFrame<\/code><\/td><td>\ucd5c\uc0c1\uc704 \uc708\ub3c4\uc6b0<\/td><\/tr><tr><td><code>JPanel<\/code><\/td><td>\ucef4\ud3ec\ub10c\ud2b8\ub97c \ubb36\ub294 \ucee8\ud14c\uc774\ub108<\/td><\/tr><tr><td><code>JLabel<\/code><\/td><td>\ud14d\uc2a4\ud2b8 \ud45c\uc2dc<\/td><\/tr><tr><td><code>JButton<\/code><\/td><td>\ubc84\ud2bc<\/td><\/tr><tr><td><code>JTextField<\/code><\/td><td>\ud55c \uc904 \ud14d\uc2a4\ud2b8 \uc785\ub825<\/td><\/tr><tr><td><code>JTextArea<\/code><\/td><td>\uc5ec\ub7ec \uc904 \ud14d\uc2a4\ud2b8 \uc785\ub825<\/td><\/tr><tr><td><code>JCheckBox<\/code><\/td><td>\uccb4\ud06c \uc120\ud0dd<\/td><\/tr><tr><td><code>JRadioButton<\/code><\/td><td>\uc5ec\ub7ec \uc120\ud0dd\uc9c0 \uc911 \ud558\ub098 \uc120\ud0dd<\/td><\/tr><tr><td><code>JComboBox<\/code><\/td><td>\ub4dc\ub86d\ub2e4\uc6b4<\/td><\/tr><tr><td><code>JList<\/code><\/td><td>\ubaa9\ub85d<\/td><\/tr><tr><td><code>JTable<\/code><\/td><td>\ud14c\uc774\ube14<\/td><\/tr><tr><td><code>JMenuBar<\/code><\/td><td>\uba54\ub274<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\ud2b9\ud788 <code>JPanel<\/code>\uc740 \ubcf5\uc7a1\ud55c \ud654\uba74\uc744 \uc601\uc5ed\ubcc4\ub85c \ub098\ub20c \ub54c \uc790\uc8fc \uc0ac\uc6a9\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>JFrame -&gt; HeaderPanel \/ ContentPanel \/ FooterPanel\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uac01 \ud328\ub110\uc774 \uc790\uc2e0\uc758 UI\ub97c \ub2f4\ub2f9\ud558\ub3c4\ub85d \ub9cc\ub4e4\uba74 \ud558\ub098\uc758 \uac70\ub300\ud55c \ud654\uba74 \ud074\ub798\uc2a4\ub85c \ucf54\ub4dc\ub97c \uc791\uc131\ud558\ub294 \uac83\ubcf4\ub2e4 \uc720\uc9c0\ubcf4\uc218\uac00 \uc26c\uc6cc\uc9c4\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Layout Manager<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Swing\uc5d0\uc11c\ub294 \ucef4\ud3ec\ub10c\ud2b8\uc758 \uc704\uce58\ub97c \uc9c1\uc811 \uc88c\ud45c\ub85c \uc9c0\uc815\ud560 \uc218\ub3c4 \uc788\uc9c0\ub9cc \uc77c\ubc18\uc801\uc73c\ub85c <code>Layout Manager<\/code>\ub97c \uc0ac\uc6a9\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>JPanel panel = new JPanel();\npanel.setLayout(new FlowLayout());\n\npanel.add(new JButton(\"A\"));\npanel.add(new JButton(\"B\"));\npanel.add(new JButton(\"C\"));\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub300\ud45c\uc801\uc778 Layout Manager\ub294 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">FlowLayout<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\ucef4\ud3ec\ub10c\ud2b8\ub97c \uc21c\uc11c\ub300\ub85c \ubc30\uce58\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;A] \/ &#91;B] \/ &#91;C] \/ &#91;D]\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uac04\ub2e8\ud55c UI\uc5d0 \uc801\ud569\ud558\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">BorderLayout<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\uc601\uc5ed\uc744 <code>NORTH<\/code>, <code>SOUTH<\/code>, <code>WEST<\/code>, <code>EAST<\/code>, <code>CENTER<\/code>\ub85c \ub098\ub204\uc5b4 \ubc30\uce58\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>BorderLayout -&gt; NORTH \/ SOUTH \/ WEST \/ EAST \/ CENTER\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>panel.setLayout(new BorderLayout());\n\npanel.add(topPanel, BorderLayout.NORTH);\npanel.add(centerPanel, BorderLayout.CENTER);\npanel.add(bottomPanel, BorderLayout.SOUTH);\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">GridLayout<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\ud589\uacfc \uc5f4\ub85c \uc601\uc5ed\uc744 \uade0\ub4f1\ud558\uac8c \ub098\ub208\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;A] \/ &#91;B] \/ &#91;C] \/ &#91;D] \/ &#91;E] \/ &#91;F]\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uacc4\uc0b0\uae30 \ubc84\ud2bc\ucc98\ub7fc \ub3d9\uc77c\ud55c \ud06c\uae30\uc758 \ucef4\ud3ec\ub10c\ud2b8\ub97c \ubc30\uce58\ud560 \ub54c \uc0ac\uc6a9\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">GridBagLayout<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\ubcf5\uc7a1\ud55c \ud654\uba74 \ubc30\uce58\ub97c \uc138\ubc00\ud558\uac8c \uc81c\uc5b4\ud560 \uc218 \uc788\ub294 Layout Manager\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub300\uc2e0 <code>GridBagConstraints<\/code> \ub4f1 \uc124\uc815\uc774 \ub9ce\uc544 \ucf54\ub4dc\uac00 \ubcf5\uc7a1\ud574\uc9c8 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub530\ub77c\uc11c \ubaa8\ub4e0 \ud654\uba74\uc5d0 \ubb34\uc870\uac74 \uc0ac\uc6a9\ud560 \ud544\uc694\ub294 \uc5c6\uace0, \ud544\uc694\ud55c \uacbd\uc6b0\uc5d0 \uc120\ud0dd\ud558\ub294 \uac83\uc774 \uc88b\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Event Listener<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Swing \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc740 \uc0ac\uc6a9\uc790\uc758 \uc785\ub825\uc744 \uc774\ubca4\ud2b8\ub85c \ubc1b\uc544 \ucc98\ub9ac\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ubc84\ud2bc \ud074\ub9ad \uac19\uc740 \uc774\ubca4\ud2b8\uac00 \ubc1c\uc0dd\ud558\uba74 \ub4f1\ub85d\ub41c Listener\uac00 \uc2e4\ud589\ub41c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>JButton button = new JButton(\"\uc800\uc7a5\");\n\nbutton.addActionListener(e -&gt; {\n    System.out.println(\"\uc800\uc7a5 \ubc84\ud2bc \ud074\ub9ad\");\n});\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uae30\ubcf8\uc801\uc778 \uad6c\uc870\ub294 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>User Input -&gt; Event -&gt; Event Listener -&gt; Application Logic\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub300\ud45c\uc801\uc778 \uc774\ubca4\ud2b8 \ub9ac\uc2a4\ub108\ub294 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ActionListener \/ MouseListener \/ MouseMotionListener \/ KeyListener \/ WindowListener\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ubc84\ud2bc\uc774\ub098 \uba54\ub274\ucc98\ub7fc \ud2b9\uc815 \uba85\ub839\uc744 \uc2e4\ud589\ud558\ub294 UI\uc5d0\ub294 <code>ActionListener<\/code>\ub97c \uac00\uc7a5 \ub9ce\uc774 \uc0ac\uc6a9\ud55c\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Event Dispatch Thread<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Swing\uc5d0\uc11c \uac00\uc7a5 \uc911\uc694\ud55c \uac1c\ub150 \uc911 \ud558\ub098\uac00 <code>EDT(Event Dispatch Thread)<\/code>\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Swing\uc758 UI \uc774\ubca4\ud2b8 \ucc98\ub9ac\uc640 \ub300\ubd80\ubd84\uc758 UI \uc791\uc5c5\uc740 EDT\ub97c \uc911\uc2ec\uc73c\ub85c \ub3d9\uc791\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">GUI\ub97c \uc0dd\uc131\ud560 \ub54c\ub3c4 \uc77c\ubc18\uc801\uc73c\ub85c <code>SwingUtilities.invokeLater()<\/code>\ub97c \uc0ac\uc6a9\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SwingUtilities.invokeLater(() -&gt; {\n    createAndShowGUI();\n});\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ud575\uc2ec\uc740 <strong>EDT\ub97c \uc624\ub798 \uc810\uc720\ud558\uba74 UI \uc804\uccb4\uac00 \uba48\ucd98\ub2e4<\/strong>\ub294 \uac83\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>button.addActionListener(e -&gt; {\n    heavyTask();\n});\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><code>heavyTask()<\/code>\uac00 10\ucd08 \ub3d9\uc548 \uc2e4\ud589\ub41c\ub2e4\uba74 \ubc84\ud2bc \uc774\ubca4\ud2b8\ub97c \ucc98\ub9ac\ud558\ub358 EDT\ub3c4 10\ucd08 \ub3d9\uc548 \ud574\ub2f9 \uc791\uc5c5\uc5d0 \ubb36\uc778\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Button Click -&gt; EDT -&gt; Heavy Task -&gt; UI Update\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uadf8\ub3d9\uc548 EDT\uac00 \ub2e4\ub978 \uc774\ubca4\ud2b8\ub97c \ucc98\ub9ac\ud558\uc9c0 \ubabb\ud558\uae30 \ub54c\ubb38\uc5d0 \ud654\uba74\uc774 \uba48\ucd98 \uac83\ucc98\ub7fc \ubcf4\uc778\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub530\ub77c\uc11c \uc624\ub798 \uac78\ub9ac\ub294 \uc791\uc5c5\uc740 EDT\uc640 \ubd84\ub9ac\ud574\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>User Input -&gt; EDT -&gt; Background Task -&gt; Result -&gt; EDT -&gt; UI Update\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Swing\uc5d0\uc11c GUI\ub97c \uc81c\ub300\ub85c \ub2e4\ub8e8\ub824\uba74 \ucef4\ud3ec\ub10c\ud2b8 API\ubcf4\ub2e4 EDT\uc640 \uc2a4\ub808\ub4dc\uc758 \uad00\uacc4\ub97c \uc774\ud574\ud558\ub294 \uac83\uc774 \ub354 \uc911\uc694\ud558\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">SwingWorker<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\ud30c\uc77c \ucc98\ub9ac, \ub124\ud2b8\uc6cc\ud06c \uc694\uccad, \ub300\ub7c9 \ub370\uc774\ud130 \ucc98\ub9ac\ucc98\ub7fc \uc624\ub798 \uac78\ub9ac\ub294 \uc791\uc5c5\uc740 <code>SwingWorker<\/code>\ub97c \uc0ac\uc6a9\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>new SwingWorker&lt;String, Void&gt;() {\n\n    @Override\n    protected String doInBackground() {\n        return loadData();\n    }\n\n    @Override\n    protected void done() {\n        \/\/ \uc791\uc5c5 \uc644\ub8cc \ud6c4 UI \uac31\uc2e0\n    }\n\n}.execute();\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><code>doInBackground()<\/code>\uc5d0\uc11c\ub294 \ubc31\uadf8\ub77c\uc6b4\ub4dc \uc791\uc5c5\uc744 \uc218\ud589\ud558\uace0 <code>done()<\/code>\uc5d0\uc11c\ub294 \uc791\uc5c5 \uacb0\uacfc\ub97c \uc774\uc6a9\ud574 UI\ub97c \uac31\uc2e0\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc804\uccb4\uc801\uc778 \uad6c\uc870\ub294 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>EDT -&gt; SwingWorker -&gt; Background Task -&gt; Result -&gt; EDT -&gt; UI Update\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uacb0\uad6d \uc911\uc694\ud55c \uc6d0\uce59\uc740 \ub2e8\uc21c\ud558\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\ubb34\uac70\uc6b4 \uc791\uc5c5\uc73c\ub85c EDT\ub97c \ub9c9\uc9c0 \uc54a\ub294\ub2e4.<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Component State<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Swing\uc758 UI \ucef4\ud3ec\ub10c\ud2b8\ub294 \uac01\uac01 \uc790\uc2e0\uc758 \uc0c1\ud0dc\ub97c \uac00\uc9c0\uace0 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4 <code>JTextField<\/code>\uc5d0\uc11c \ud604\uc7ac \uac12\uc744 \uac00\uc838\uc62c \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>String name = textField.getText();\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uac12\uc744 \ubcc0\uacbd\ud560 \uc218\ub3c4 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>textField.setText(\"Hello\");\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ubc84\ud2bc\uc758 \ud65c\uc131\ud654 \uc0c1\ud0dc\ub3c4 \ubcc0\uacbd\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>button.setEnabled(false);\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub530\ub77c\uc11c Swing \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc758 \ub3d9\uc791\uc740 \ub2e4\uc74c\uacfc \uac19\uc740 \uad6c\uc870\ub85c \ubcfc \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>User Input -&gt; Event -&gt; State Change -&gt; UI Update\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ud504\ub85c\uadf8\ub7a8\uc774 \ubcf5\uc7a1\ud574\uc9c8\uc218\ub85d \uc911\uc694\ud55c \uac83\uc740 \ucef4\ud3ec\ub10c\ud2b8 \uc790\uccb4\ubcf4\ub2e4 <strong>\uc0c1\ud0dc\ub97c \uc5b4\ub514\uc5d0\uc11c \uad00\ub9ac\ud558\uace0 \uc5b4\ub5bb\uac8c UI\uc5d0 \ubc18\uc601\ud560 \uac83\uc778\uac00<\/strong>\uac00 \ub41c\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Model<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Swing\uc758 \uc77c\ubd80 \ucef4\ud3ec\ub10c\ud2b8\ub294 UI\uc640 \ub370\uc774\ud130\ub97c \ubd84\ub9ac\ud558\ub294 Model \uad6c\uc870\ub97c \uc0ac\uc6a9\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub300\ud45c\uc801\uc778 \uc608\uac00 <code>JTable<\/code>\uc774\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>JTable -&gt; TableModel -&gt; Data\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>DefaultTableModel model = new DefaultTableModel(\n    new Object&#91;]{\"Name\", \"Score\"},\n    0\n);\n\nmodel.addRow(new Object&#91;]{\"Player1\", 100});\nmodel.addRow(new Object&#91;]{\"Player2\", 200});\n\nJTable table = new JTable(model);\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ud14c\uc774\ube14 \uc790\uccb4\uc640 \uc2e4\uc81c \ub370\uc774\ud130\ub97c \ubd84\ub9ac\ud558\uba74 \ub370\uc774\ud130 \ubcc0\uacbd\uacfc UI \ud45c\ud604\uc744 \ub3c5\ub9bd\uc801\uc73c\ub85c \uad00\ub9ac\ud558\uae30 \uc26c\uc6cc\uc9c4\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>JTable<\/code>, <code>JList<\/code>, <code>JTree<\/code> \uac19\uc740 \ucef4\ud3ec\ub10c\ud2b8\ub97c \uc0ac\uc6a9\ud560\uc218\ub85d \uc774\ub7ec\ud55c Model \uad6c\uc870\ub97c \uc774\ud574\ud560 \ud544\uc694\uac00 \uc788\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\ud654\uba74 \uad6c\uc870 \ubd84\ub9ac<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\ud654\uba74\uc774 \ubcf5\uc7a1\ud574\uc9c0\uba74 \ud558\ub098\uc758 <code>JFrame<\/code>\uc5d0 \ubaa8\ub4e0 UI\ub97c \uc9c1\uc811 \ub123\ub294 \uad6c\uc870\ub294 \ube60\ub974\uac8c \ud55c\uacc4\uac00 \uc628\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ubcf4\ud1b5 <code>JPanel<\/code>\uc744 \uae30\uc900\uc73c\ub85c \ud654\uba74\uc744 \uc601\uc5ed\ubcc4\ub85c \ubd84\ub9ac\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>JFrame -&gt; HeaderPanel \/ ContentPanel \/ FooterPanel\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Content \uc601\uc5ed\ub3c4 \ub2e4\uc2dc \ub098\ub20c \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ContentPanel -&gt; InputPanel \/ TablePanel \/ DetailPanel\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uac01 \ud328\ub110\uc774 \uc790\uc2e0\uc758 UI\uc640 \uad00\ub828\ub41c \ucc45\uc784\uc744 \uac00\uc9c0\ub3c4\ub85d \ud558\uba74 \ucf54\ub4dc\uc758 \uacb0\ud569\ub3c4\ub97c \ub0ae\ucd9c \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class UserPanel extends JPanel {\n\n    private final JTextField nameField = new JTextField(10);\n    private final JButton saveButton = new JButton(\"\uc800\uc7a5\");\n\n    public UserPanel() {\n        setLayout(new FlowLayout());\n\n        add(nameField);\n        add(saveButton);\n\n        saveButton.addActionListener(e -&gt; save());\n    }\n\n    private void save() {\n        String name = nameField.getText();\n        System.out.println(name);\n    }\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ud654\uba74 \uc804\uccb4\ub97c \ud558\ub098\uc758 \ud074\ub798\uc2a4\uc5d0\uc11c \uad00\ub9ac\ud558\ub294 \uac83\ubcf4\ub2e4 \uae30\ub2a5\ubcc4 \ucef4\ud3ec\ub10c\ud2b8\uc640 \ud328\ub110\ub85c \ub098\ub204\ub294 \ud3b8\uc774 \uaddc\ubaa8\uac00 \ucee4\uc84c\uc744 \ub54c \uc720\ub9ac\ud558\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Swing\uacfc AWT<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Swing\uc744 \uc774\ud574\ud558\ub824\uba74 <code>AWT(Abstract Window Toolkit)<\/code>\ub3c4 \ud568\uaed8 \uc54c\uc544\ub458 \ud544\uc694\uac00 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Swing\uc740 AWT\uc758 \uc5ec\ub7ec \uae30\ub2a5\uacfc \uad6c\uc870\ub97c \uae30\ubc18\uc73c\ub85c \ub3d9\uc791\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>AWT -&gt; Component \/ Container \/ Window \/ Layout \/ Event\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Swing\uc5d0\uc11c\ub294 \uc774\ub97c \uae30\ubc18\uc73c\ub85c \ub354 \ub9ce\uc740 GUI \ucef4\ud3ec\ub10c\ud2b8\ub97c \uc81c\uacf5\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Swing -&gt; JFrame \/ JPanel \/ JButton \/ JTable \/ JTextField\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Swing \ucef4\ud3ec\ub10c\ud2b8 \uc774\ub984 \ub300\ubd80\ubd84\uc5d0 <code>J<\/code>\uac00 \ubd99\ub294 \uac83\ub3c4 \uc774\ub7ec\ud55c \uacc4\uce35\uacfc \uad00\ub828\uc774 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub458\uc744 \uc644\uc804\ud788 \ubcc4\uac1c\uc758 \uae30\uc220\ub85c \uc0dd\uac01\ud558\uae30\ubcf4\ub2e4 <strong>AWT\ub97c \uae30\ubc18\uc73c\ub85c Swing\uc774 \ud655\uc7a5\ub418\uc5c8\ub2e4<\/strong>\uace0 \uc774\ud574\ud558\ub294 \ud3b8\uc774 \uc88b\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Swing\uc758 \ub300\ud45c\uc801\uc778 \ubb38\uc81c<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Swing\uc5d0\uc11c \ubc18\ubcf5\uc801\uc73c\ub85c \ub9cc\ub098\uac8c \ub418\ub294 \ubb38\uc81c\ub294 \ud06c\uac8c \uba87 \uac00\uc9c0\uac00 \uc788\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">EDT\uc5d0\uc11c \ubb34\uac70\uc6b4 \uc791\uc5c5 \uc2e4\ud589<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\uac00\uc7a5 \ud754\ud55c \ubb38\uc81c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Button Click -&gt; EDT -&gt; Heavy Task -&gt; UI Freeze\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ud30c\uc77c I\/O\ub098 \ub124\ud2b8\uc6cc\ud06c \uc694\uccad\ucc98\ub7fc \uc624\ub798 \uac78\ub9ac\ub294 \uc791\uc5c5\uc740 EDT\uc640 \ubd84\ub9ac\ud574\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\uac70\ub300\ud55c UI \ud074\ub798\uc2a4<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\ucc98\uc74c\uc5d0\ub294 \ud558\ub098\uc758 <code>MainFrame<\/code>\uc5d0 \ubaa8\ub4e0 \ucf54\ub4dc\ub97c \ub123\uc5b4\ub3c4 \ubb38\uc81c\uac00 \uc5c6\uc5b4 \ubcf4\uc778\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud558\uc9c0\ub9cc \uae30\ub2a5\uc774 \ucd94\uac00\ub418\uba74 UI \uad6c\uc131, \uc774\ubca4\ud2b8 \ucc98\ub9ac, \ub370\uc774\ud130 \ucc98\ub9ac, \uc0c1\ud0dc \uad00\ub9ac\uac00 \ud558\ub098\uc758 \ud074\ub798\uc2a4\uc5d0 \ubab0\ub9ac\uac8c \ub41c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774 \uacbd\uc6b0 \ud328\ub110, \ubaa8\ub378, \uc11c\ube44\uc2a4 \ub4f1\uc758 \uc5ed\ud560\uc744 \ubd84\ub9ac\ud558\ub294 \uac83\uc774 \uc88b\ub2e4.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\uc808\ub300 \uc88c\ud45c\uc5d0 \uc758\uc874<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>button.setBounds(100, 50, 120, 40);\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc9c1\uc811 \uc88c\ud45c\ub97c \uc9c0\uc815\ud558\uba74 \uac04\ub2e8\ud55c \ud654\uba74\uc5d0\uc11c\ub294 \ube60\ub974\uac8c \ub9cc\ub4e4 \uc218 \uc788\uc9c0\ub9cc \ucc3d \ud06c\uae30 \ubcc0\uacbd\uc774\ub098 UI \uad6c\uc870 \ubcc0\uacbd\uc5d0 \ucde8\uc57d\ud558\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc77c\ubc18\uc801\uc778 \ud654\uba74\uc5d0\uc11c\ub294 Layout Manager\ub97c \uc0ac\uc6a9\ud558\ub294 \ud3b8\uc774 \uc720\uc9c0\ubcf4\uc218\uc5d0 \uc720\ub9ac\ud558\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Swing\uc758 \uc804\uccb4 \uad6c\uc870<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Swing \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \ud558\ub098\uc758 \uad6c\uc870\ub85c \ubcf4\uba74 \ub2e4\uc74c\uacfc \uac19\uc774 \uc815\ub9ac\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>User Input -&gt; Event Listener -&gt; Application Logic -&gt; Model \/ State -&gt; UI Component\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">UI \uad6c\uc870 \uc790\uccb4\ub294 \ub2e4\uc74c\uacfc \uac19\uc774 \uad6c\uc131\ub41c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>JFrame -&gt; JPanel \/ JPanel \/ JPanel\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uac01 \ud328\ub110 \ub0b4\ubd80\uc5d0\ub294 \ud544\uc694\ud55c UI \ucef4\ud3ec\ub10c\ud2b8\ub97c \ubc30\uce58\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>JPanel -&gt; JLabel \/ JTextField \/ JButton \/ JTable\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc624\ub798 \uac78\ub9ac\ub294 \uc791\uc5c5\uc740 EDT\uc640 \ubd84\ub9ac\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>EDT -&gt; SwingWorker -&gt; Background Task -&gt; Result -&gt; EDT -&gt; UI Update\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uacb0\uad6d Swing\uc744 \ud558\ub098\uc758 \ud750\ub984\uc73c\ub85c \ubcf4\uba74 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>User Input -&gt; Event -&gt; State \/ Model Change -&gt; UI Update\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc5ec\uae30\uc5d0 \uc2a4\ub808\ub4dc \ucc98\ub9ac\uac00 \ucd94\uac00\ub418\uba74:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>User Input -&gt; EDT -&gt; Background Task -&gt; Result -&gt; EDT -&gt; UI Update\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774 \ud750\ub984\uc744 \uc774\ud574\ud558\uba74 \uac1c\ubcc4 \ucef4\ud3ec\ub10c\ud2b8\uc758 \uc0ac\uc6a9\ubc95\uc740 \ud544\uc694\ud560 \ub54c \ucc3e\uc544\uc11c \uc0ac\uc6a9\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Swing\uc758 \ud604\uc7ac \uc704\uce58<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Swing\uc740 \ud604\uc7ac \uc2e0\uaddc \ub370\uc2a4\ud06c\ud1b1 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc758 \uc8fc\ub825 \uc120\ud0dd\uc9c0\ub77c\uace0 \ubcf4\uae30\ub294 \uc5b4\ub835\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud558\uc9c0\ub9cc Java\ub85c \ub9cc\ub4e4\uc5b4\uc9c4 \uae30\uc874 \ub370\uc2a4\ud06c\ud1b1 \ud504\ub85c\uadf8\ub7a8\uc5d0\ub294 \uc5ec\uc804\ud788 Swing\uc774 \uc0ac\uc6a9\ub418\ub294 \uacbd\uc6b0\uac00 \uc788\uace0, \ub808\uac70\uc2dc \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \uc720\uc9c0\ubcf4\uc218\ud558\uac70\ub098 \ubd84\uc11d\ud560 \ub54c\ub294 \uad6c\uc870\ub97c \uc774\ud574\ud558\uace0 \uc788\uc5b4\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub610\ud55c Swing\uc5d0\uc11c \ubc30\uc6b0\ub294 \ub0b4\uc6a9 \uc790\uccb4\uac00 Swing\uc5d0\ub9cc \ud55c\uc815\ub418\ub294 \uac83\uc740 \uc544\ub2c8\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>User Input -&gt; Event -&gt; State Change -&gt; UI Update\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ubca4\ud2b8 \uae30\ubc18 GUI \uad6c\uc870\uc640 UI \uc0c1\ud0dc \uad00\ub9ac, \ub80c\ub354\ub9c1\uacfc \uc791\uc5c5 \uc2a4\ub808\ub4dc\uc758 \ubd84\ub9ac\ub294 \ub2e4\ub978 GUI \ud504\ub808\uc784\uc6cc\ud06c\uc5d0\uc11c\ub3c4 \ubc18\ubcf5\uc801\uc73c\ub85c \ub4f1\uc7a5\ud55c\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\uc815\ub9ac<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Swing\uc5d0\uc11c \uc6b0\uc120 \uc775\ud600\uc57c \ud560 \ud575\uc2ec\uc740 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>JFrame \/ JPanel \/ UI Components \/ Layout Manager \/ Event Listener \/ EDT \/ SwingWorker \/ Model\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uacf5\ubd80 \uc21c\uc11c\ub294 \ub2e4\uc74c \uc815\ub3c4\ub85c \uc7a1\uc73c\uba74 \ub41c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Component -&gt; Container -&gt; Layout -&gt; Event -&gt; EDT -&gt; Model -&gt; \ud654\uba74 \uad6c\uc870 \ubd84\ub9ac\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Swing\uc758 \ud575\uc2ec\uc740 \ubc84\ud2bc\uc744 \ub9cc\ub4dc\ub294 \ubc29\ubc95\uc774 \uc544\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\uc0ac\uc6a9\uc790 \uc785\ub825 -&gt; \uc774\ubca4\ud2b8 -&gt; \uc0c1\ud0dc \ubcc0\uacbd -&gt; UI \ubc18\uc601<\/strong>\uc774\ub77c\ub294 \uad6c\uc870\ub97c \uc774\ud574\ud558\uace0, \ub3d9\uc2dc\uc5d0 <strong>EDT\uc5d0\uc11c UI\ub97c \ucc98\ub9ac\ud558\uba74\uc11c \ubb34\uac70\uc6b4 \uc791\uc5c5\uc740 \ubcc4\ub3c4\uc758 \uc2e4\ud589 \ud750\ub984\uc73c\ub85c \ubd84\ub9ac\ud558\ub294 \uac83<\/strong>\uc774 \uc911\uc694\ud558\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Swing\uc744 \uc81c\ub300\ub85c \uc774\ud574\ud558\uba74 \ub2e8\uc21c\ud788 \uc624\ub798\ub41c Java GUI \uae30\uc220 \ud558\ub098\ub97c \uc775\ud788\ub294 \uac83\uc774 \uc544\ub2c8\ub77c \uc774\ubca4\ud2b8 \uae30\ubc18 \ub370\uc2a4\ud06c\ud1b1 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc758 \uae30\ubcf8 \uad6c\uc870\ub97c \uc774\ud574\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud604\uc7ac \uc2e0\uaddc \ud504\ub85c\uc81d\ud2b8\ub77c\uba74 \ub2e4\ub978 \uae30\uc220\uc744 \uac80\ud1a0\ud560 \uc218 \uc788\uc9c0\ub9cc, Java GUI\uc640 \ub808\uac70\uc2dc \uc2dc\uc2a4\ud15c\uc744 \uc774\ud574\ud55c\ub2e4\ub294 \uad00\uc810\uc5d0\uc11c\ub294 \uc5ec\uc804\ud788 \ud559\uc2b5 \uac00\uce58\uac00 \uc788\ub294 \uae30\uc220\uc774\ub2e4.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Java\ub85c \ub370\uc2a4\ud06c\ud1b1 GUI\ub97c \uac1c\ubc1c\ud560 \ub54c \uc0ac\uc6a9\ud558\ub294 \ub300\ud45c\uc801\uc778 \uae30\uc220 \uc911 \ud558\ub098\uac00 Swing\uc774\ub2e4. \ucd5c\uadfc \uc2e0\uaddc \ud504\ub85c\uc81d\ud2b8\uc5d0\uc11c \uc8fc\ub825\uc73c\ub85c \uc120\ud0dd\ub418\ub294 \uae30\uc220\uc740 \uc544\ub2c8\uc9c0\ub9cc, Java \uae30\ubc18 \ub808\uac70\uc2dc \ub370\uc2a4\ud06c\ud1b1 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \uc720\uc9c0\ubcf4\uc218\ud558\uac70\ub098 \uae30\uc874 \ucf54\ub4dc\ub97c \ubd84\uc11d\ud574\uc57c \ud55c\ub2e4\uba74 \uc5ec\uc804\ud788 \uc811\ud560 \uc218 \uc788\ub2e4. Swing\uc744 \uc774\ud574\ud560 \ub54c \uc911\uc694\ud55c \uac83\uc740 JButton\uc774\ub098 JTextField \uac19\uc740 \ucef4\ud3ec\ub10c\ud2b8\uc758 \uc0ac\uc6a9\ubc95\uc744 \uc678\uc6b0\ub294 \uac83\uc774 \uc544\ub2c8\ub2e4. \uc0ac\uc6a9\uc790 \uc785\ub825 -&gt; \uc774\ubca4\ud2b8 -&gt; \uc0c1\ud0dc \ubcc0\uacbd -&gt; UI \ubc18\uc601\uc774\ub77c\ub294 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[48],"tags":[],"class_list":["post-1649","post","type-post","status-publish","format-standard","hentry","category-client"],"_links":{"self":[{"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=\/wp\/v2\/posts\/1649","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1649"}],"version-history":[{"count":3,"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=\/wp\/v2\/posts\/1649\/revisions"}],"predecessor-version":[{"id":1938,"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=\/wp\/v2\/posts\/1649\/revisions\/1938"}],"wp:attachment":[{"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1649"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1649"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1649"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}