{"id":276,"date":"2025-08-22T15:16:48","date_gmt":"2025-08-22T15:16:48","guid":{"rendered":"https:\/\/iotnoob.com\/wordpress\/?p=276"},"modified":"2025-09-09T10:24:39","modified_gmt":"2025-09-09T10:24:39","slug":"special-dialog-%e0%b8%94%e0%b9%89%e0%b8%a7%e0%b8%a2-joptionpane","status":"publish","type":"post","link":"https:\/\/iotnoob.com\/wordpress\/2025\/08\/22\/special-dialog-%e0%b8%94%e0%b9%89%e0%b8%a7%e0%b8%a2-joptionpane\/","title":{"rendered":"Special dialog \u0e14\u0e49\u0e27\u0e22 JOptionPane"},"content":{"rendered":"\n<p>JOptionPane \u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e2a\u0e23\u0e49\u0e32\u0e07 dialog box \u0e17\u0e31\u0e48\u0e27\u0e44\u0e1b\u0e43\u0e2b\u0e49\u0e40\u0e23\u0e32\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e44\u0e14\u0e49 \u0e40\u0e0a\u0e48\u0e19 message box, confirm box \u0e2b\u0e23\u0e37\u0e2d input box<\/p>\n\n\n\n<p>\u0e41\u0e15\u0e48\u0e1a\u0e32\u0e07\u0e04\u0e23\u0e31\u0e49\u0e07\u0e40\u0e23\u0e32\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23 dialog \u0e17\u0e35\u0e48\u0e1e\u0e34\u0e40\u0e28\u0e29\u0e02\u0e36\u0e49\u0e19\u0e21\u0e32\u0e2d\u0e35\u0e01\u0e2b\u0e19\u0e48\u0e2d\u0e22 \u0e40\u0e0a\u0e48\u0e19 \u0e21\u0e35 4 \u0e1b\u0e38\u0e48\u0e21 \u0e21\u0e35 3 text field<br>\u0e0b\u0e36\u0e48\u0e07\u0e42\u0e14\u0e22 default \u0e21\u0e31\u0e19\u0e40\u0e2b\u0e21\u0e37\u0e2d\u0e19\u0e44\u0e21\u0e48\u0e21\u0e35 \u0e17\u0e38\u0e01\u0e04\u0e23\u0e31\u0e49\u0e07\u0e40\u0e25\u0e22\u0e44\u0e1b\u0e2a\u0e23\u0e49\u0e32\u0e07 custom dialog \u0e02\u0e36\u0e49\u0e19\u0e21\u0e32\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19<\/p>\n\n\n\n<p>\u0e08\u0e19\u0e27\u0e31\u0e19\u0e19\u0e36\u0e07\u0e1e\u0e1a\u0e27\u0e48\u0e32 \u0e16\u0e49\u0e32\u0e44\u0e21\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e2d\u0e30\u0e44\u0e23\u0e1e\u0e34\u0e40\u0e28\u0e29\u0e21\u0e32\u0e01\u0e46 JOptionPane \u0e01\u0e47\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16 custom \u0e44\u0e14\u0e49\u0e43\u0e19\u0e23\u0e30\u0e14\u0e31\u0e1a\u0e19\u0e36\u0e07\u0e40\u0e25\u0e22 \u0e42\u0e14\u0e22\u0e44\u0e21\u0e48\u0e08\u0e33\u0e40\u0e1b\u0e47\u0e19\u0e15\u0e49\u0e2d\u0e07\u0e2a\u0e23\u0e49\u0e32\u0e07 custom dialog \u0e40\u0e25\u0e22\u0e01\u0e47\u0e44\u0e14\u0e49<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"951\" height=\"370\" src=\"https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-87.png\" alt=\"\" class=\"wp-image-279\" srcset=\"https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-87.png 951w, https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-87-300x117.png 300w, https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-87-768x299.png 768w\" sizes=\"auto, (max-width: 951px) 100vw, 951px\" \/><\/figure>\n\n\n\n<p>\u0e42\u0e14\u0e22\u0e2b\u0e25\u0e31\u0e01\u0e01\u0e32\u0e23\u0e04\u0e37\u0e2d\u0e40\u0e23\u0e32\u0e2a\u0e48\u0e07 array \u0e02\u0e2d\u0e07 component \u0e17\u0e35\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e41\u0e2a\u0e14\u0e07\u0e40\u0e02\u0e49\u0e32\u0e44\u0e1b\u0e43\u0e19 Object[] options array \u0e15\u0e31\u0e27\u0e19\u0e35\u0e49<\/p>\n\n\n\n<p>\u0e2a\u0e48\u0e27\u0e19 Object message \u0e01\u0e47\u0e44\u0e21\u0e48\u0e08\u0e33\u0e40\u0e1b\u0e47\u0e19\u0e15\u0e49\u0e2d\u0e07\u0e40\u0e1b\u0e47\u0e19 text string, \u0e40\u0e1e\u0e23\u0e32\u0e30\u0e40\u0e23\u0e32\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e2a\u0e48\u0e07 component \u0e2d\u0e30\u0e44\u0e23\u0e40\u0e02\u0e49\u0e32\u0e44\u0e1b\u0e01\u0e47\u0e44\u0e14\u0e49\u0e40\u0e2b\u0e21\u0e37\u0e2d\u0e19\u0e01\u0e31\u0e19<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">import java.awt.Color;\nimport java.awt.Dimension;\nimport java.awt.Font;\nimport java.awt.Window;\nimport javax.swing.JButton;\nimport javax.swing.JDialog;\nimport javax.swing.JFrame;\nimport javax.swing.JLabel;\nimport javax.swing.JOptionPane;\nimport javax.swing.SwingUtilities;\n\n\/**\n *\n * @author Thada\n *\/\npublic class PlatedCutoutsQueryDialog {\n    \n    \/**\n     * Enum \u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e40\u0e01\u0e47\u0e1a\u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e18\u0e4c\u0e17\u0e35\u0e48\u0e44\u0e14\u0e49\u0e08\u0e32\u0e01\u0e01\u0e32\u0e23\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e1b\u0e38\u0e48\u0e21\u0e43\u0e19 dialog\n     *\/\n    public enum PlatedCutoutsDialogResult {\n        OUTLINE,\n        SKELETON,\n        CANCEL\n    }\n\n    public static void main(String[] args) {\n        \/\/ \u0e01\u0e32\u0e23\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e41\u0e25\u0e30\u0e41\u0e2a\u0e14\u0e07 GUI \u0e04\u0e27\u0e23\u0e17\u0e33\u0e1a\u0e19 Event Dispatch Thread (EDT)\n        SwingUtilities.invokeLater(() -> {\n            \/\/ \u0e2a\u0e23\u0e49\u0e32\u0e07 Frame \u0e2b\u0e25\u0e31\u0e01 (\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e43\u0e2b\u0e49 dialog \u0e2d\u0e22\u0e39\u0e48\u0e15\u0e23\u0e07\u0e01\u0e25\u0e32\u0e07\u0e02\u0e2d\u0e07 frame \u0e19\u0e35\u0e49)\n            JFrame frame = new JFrame(\"Custom JOptionPane Demo\");\n            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);\n            frame.setSize(400, 300);\n            frame.setLocationRelativeTo(null);\n            \n            \/\/ \u0e40\u0e23\u0e35\u0e22\u0e01\u0e41\u0e2a\u0e14\u0e07 custom dialog \u0e41\u0e25\u0e30\u0e23\u0e31\u0e1a\u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e18\u0e4c\n            JDialog jd = new JDialog();\n            jd.setAlwaysOnTop(true);\n            jd.setLocationRelativeTo(null);\n            PlatedCutoutsDialogResult result = showCustomDialog(jd);\n            jd.dispose();\n            \n            \/\/ \u0e41\u0e2a\u0e14\u0e07\u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e18\u0e4c\u0e17\u0e35\u0e48\u0e44\u0e14\u0e49\u0e43\u0e19 console\n            \/\/System.out.println(\"\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e40\u0e25\u0e37\u0e2d\u0e01: \" + result);\n            System.out.println(\"Select -:> \" + result);\n            \n            \/\/ \u0e1b\u0e34\u0e14\u0e42\u0e1b\u0e23\u0e41\u0e01\u0e23\u0e21\u0e2b\u0e25\u0e31\u0e07\u0e08\u0e32\u0e01 dialog \u0e16\u0e39\u0e01\u0e1b\u0e34\u0e14\n            System.exit(0);\n        });\n    }\n\n    \/**\n     * \u0e40\u0e21\u0e18\u0e2d\u0e14\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e41\u0e25\u0e30\u0e41\u0e2a\u0e14\u0e07 JOptionPane \u0e17\u0e35\u0e48\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e40\u0e2d\u0e07\n     * @param parentComponent Frame \u0e2b\u0e23\u0e37\u0e2d Component \u0e17\u0e35\u0e48\u0e40\u0e1b\u0e47\u0e19\u0e40\u0e08\u0e49\u0e32\u0e02\u0e2d\u0e07 dialog \u0e19\u0e35\u0e49\n     * @return \u0e04\u0e48\u0e32 enum DialogResult \u0e15\u0e32\u0e21\u0e1b\u0e38\u0e48\u0e21\u0e17\u0e35\u0e48\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e40\u0e25\u0e37\u0e2d\u0e01\n     *\/\n    public static PlatedCutoutsDialogResult showCustomDialog(JDialog parentComponent) {\n        \n        \/\/ 1. \u0e2a\u0e23\u0e49\u0e32\u0e07\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e14\u0e49\u0e27\u0e22 HTML \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e1b\u0e23\u0e31\u0e1a\u0e02\u0e19\u0e32\u0e14\u0e41\u0e25\u0e30\u0e2a\u0e35\n        String htmlMessage = \"&lt;html>&lt;body style='width: 450px;'>\"\n                           + \"&lt;h1 style='font-size: 16px;'>Script found line\/arc in selected feature&lt;\/h1>\"\n                           + \"&lt;p style='font-size: 12px;color: red'>Script is going to move selected feature for creating plated cutouts&lt;\/p>\"\n                           + \"&lt;p style='font-size: 12px;'>How do you want to create?&lt;\/p>\"\n                           \/\/+ \"&lt;font color='red'>'Skeleton'&lt;\/font> \"\n                           \/\/+ \"\u0e2d\u0e32\u0e08\u0e43\u0e0a\u0e49\u0e40\u0e27\u0e25\u0e32\u0e43\u0e19\u0e01\u0e32\u0e23\u0e1b\u0e23\u0e30\u0e21\u0e27\u0e25\u0e1c\u0e25\u0e19\u0e32\u0e19\u0e01\u0e27\u0e48\u0e32\u0e1b\u0e01\u0e15\u0e34&lt;\/p>\"\n                           + \"&lt;\/body>&lt;\/html>\";\n        \n        JLabel messageLabel = new JLabel(htmlMessage);\n\n        \/\/ 2. \u0e2a\u0e23\u0e49\u0e32\u0e07\u0e41\u0e25\u0e30\u0e1b\u0e23\u0e31\u0e1a\u0e41\u0e15\u0e48\u0e07\u0e1b\u0e38\u0e48\u0e21 JButton\n        JButton ignoreButton = new JButton(\"Ignore\");\n        ignoreButton.setBackground(new Color(100, 200, 225));\n        ignoreButton.setFont(new Font(\"Arial\", Font.BOLD, 16));\n        ignoreButton.setPreferredSize(new Dimension(110, 40));\n        \n        JButton outlineButton = new JButton(\"Outline\");\n        outlineButton.setBackground(new Color(153, 255, 102)); \/\/ \u0e2a\u0e35\u0e1f\u0e49\u0e32\u0e2d\u0e48\u0e2d\u0e19\n        outlineButton.setFont(new Font(\"Arial\", Font.BOLD, 16));\n        outlineButton.setPreferredSize(new Dimension(110, 40));\n\n        JButton skeletonButton = new JButton(\"Skeleton\");\n        skeletonButton.setBackground(new Color(255, 204, 102)); \/\/ \u0e2a\u0e35\u0e0a\u0e21\u0e1e\u0e39\u0e2d\u0e48\u0e2d\u0e19\n        skeletonButton.setFont(new Font(\"Arial\", Font.BOLD, 16));\n        skeletonButton.setPreferredSize(new Dimension(110, 40));\n\n        JButton cancelButton = new JButton(\"Cancel\");\n        cancelButton.setBackground(new Color(255, 153, 153)); \/\/ \u0e2a\u0e35\u0e40\u0e17\u0e32\u0e2d\u0e48\u0e2d\u0e19\n        cancelButton.setFont(new Font(\"Arial\", Font.BOLD, 16));\n        cancelButton.setPreferredSize(new Dimension(110, 40));\n\n        \/\/ \u0e2a\u0e23\u0e49\u0e32\u0e07 Array \u0e02\u0e2d\u0e07 Object \u0e17\u0e35\u0e48\u0e40\u0e1b\u0e47\u0e19\u0e1b\u0e38\u0e48\u0e21\u0e17\u0e35\u0e48\u0e40\u0e23\u0e32\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e02\u0e36\u0e49\u0e19\n        Object[] buttonOptions = {outlineButton, skeletonButton, ignoreButton, cancelButton};\n        \n        \/\/ **\u0e2a\u0e48\u0e27\u0e19\u0e17\u0e35\u0e48\u0e41\u0e01\u0e49\u0e44\u0e02:** \u0e2a\u0e23\u0e49\u0e32\u0e07 JOptionPane \u0e01\u0e48\u0e2d\u0e19\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e08\u0e30\u0e40\u0e1e\u0e34\u0e48\u0e21 Listener \u0e43\u0e2b\u0e49\u0e01\u0e31\u0e1a\u0e1b\u0e38\u0e48\u0e21\n        final JOptionPane optionPane = new JOptionPane(\n                messageLabel,\n                JOptionPane.QUESTION_MESSAGE,\n                JOptionPane.DEFAULT_OPTION,\n                null,\n                buttonOptions, \/\/ \u0e2a\u0e48\u0e07 Array \u0e1b\u0e38\u0e48\u0e21\u0e40\u0e02\u0e49\u0e32\u0e44\u0e1b\n                buttonOptions[0]);\n\n        \/\/ \u0e40\u0e1e\u0e34\u0e48\u0e21 ActionListener \u0e43\u0e2b\u0e49\u0e01\u0e31\u0e1a\u0e1b\u0e38\u0e48\u0e21 Outline\n        outlineButton.addActionListener(e -> {\n            optionPane.setValue(0); \/\/ \u0e01\u0e33\u0e2b\u0e19\u0e14\u0e04\u0e48\u0e32\u0e17\u0e35\u0e48\u0e08\u0e30 return \u0e40\u0e1b\u0e47\u0e19 0\n            Window window = SwingUtilities.getWindowAncestor(outlineButton);\n            window.dispose(); \/\/ \u0e2a\u0e31\u0e48\u0e07\u0e1b\u0e34\u0e14\u0e2b\u0e19\u0e49\u0e32\u0e15\u0e48\u0e32\u0e07 dialog\n        });\n\n        \/\/ \u0e40\u0e1e\u0e34\u0e48\u0e21 ActionListener \u0e43\u0e2b\u0e49\u0e01\u0e31\u0e1a\u0e1b\u0e38\u0e48\u0e21 Skeleton\n        skeletonButton.addActionListener(e -> {\n            optionPane.setValue(1); \/\/ \u0e01\u0e33\u0e2b\u0e19\u0e14\u0e04\u0e48\u0e32\u0e17\u0e35\u0e48\u0e08\u0e30 return \u0e40\u0e1b\u0e47\u0e19 1\n            Window window = SwingUtilities.getWindowAncestor(skeletonButton);\n            window.dispose(); \/\/ \u0e2a\u0e31\u0e48\u0e07\u0e1b\u0e34\u0e14\u0e2b\u0e19\u0e49\u0e32\u0e15\u0e48\u0e32\u0e07 dialog\n        });\n\n        \/\/ \u0e40\u0e1e\u0e34\u0e48\u0e21 ActionListener \u0e43\u0e2b\u0e49\u0e01\u0e31\u0e1a\u0e1b\u0e38\u0e48\u0e21 Cancel\n        cancelButton.addActionListener(e -> {\n            optionPane.setValue(2); \/\/ \u0e01\u0e33\u0e2b\u0e19\u0e14\u0e04\u0e48\u0e32\u0e17\u0e35\u0e48\u0e08\u0e30 return \u0e40\u0e1b\u0e47\u0e19 2\n            Window window = SwingUtilities.getWindowAncestor(cancelButton);\n            window.dispose(); \/\/ \u0e2a\u0e31\u0e48\u0e07\u0e1b\u0e34\u0e14\u0e2b\u0e19\u0e49\u0e32\u0e15\u0e48\u0e32\u0e07 dialog\n        });\n\n        \/\/ \u0e2a\u0e23\u0e49\u0e32\u0e07 JDialog \u0e08\u0e32\u0e01 JOptionPane \u0e41\u0e25\u0e30\u0e41\u0e2a\u0e14\u0e07\u0e1c\u0e25\n        \/\/optionPane.createDialog(parentComponent, \"\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a\u0e01\u0e32\u0e23\u0e41\u0e2a\u0e14\u0e07\u0e1c\u0e25\").setVisible(true);\n        optionPane.createDialog(parentComponent, \"Query\").setVisible(true);\n\n        \/\/ 3. \u0e23\u0e31\u0e1a\u0e04\u0e48\u0e32\u0e17\u0e35\u0e48\u0e44\u0e14\u0e49\u0e08\u0e32\u0e01\u0e01\u0e32\u0e23\u0e01\u0e14\u0e1b\u0e38\u0e48\u0e21 (\u0e17\u0e35\u0e48\u0e40\u0e23\u0e32 setValue \u0e44\u0e27\u0e49)\n        Object selectedValue = optionPane.getValue();\n        int choice = -1; \/\/ \u0e04\u0e48\u0e32\u0e40\u0e23\u0e34\u0e48\u0e21\u0e15\u0e49\u0e19\u0e43\u0e19\u0e01\u0e23\u0e13\u0e35\u0e17\u0e35\u0e48\u0e1b\u0e34\u0e14 dialog \u0e42\u0e14\u0e22\u0e44\u0e21\u0e48\u0e01\u0e14\u0e1b\u0e38\u0e48\u0e21\n        \n        if (selectedValue instanceof Integer) {\n            choice = (Integer) selectedValue;\n        }\n\n        \/\/ 4. \u0e41\u0e1b\u0e25\u0e07\u0e04\u0e48\u0e32 index \u0e17\u0e35\u0e48\u0e44\u0e14\u0e49 (0, 1, 2) \u0e43\u0e2b\u0e49\u0e40\u0e1b\u0e47\u0e19\u0e04\u0e48\u0e32 enum \u0e17\u0e35\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\n        switch (choice) {\n            case 0: \/\/ \u0e1b\u0e38\u0e48\u0e21\u0e41\u0e23\u0e01 \"Outline\"\n                return PlatedCutoutsDialogResult.OUTLINE;\n            case 1: \/\/ \u0e1b\u0e38\u0e48\u0e21\u0e17\u0e35\u0e48\u0e2a\u0e2d\u0e07 \"Skeleton\"\n                return PlatedCutoutsDialogResult.SKELETON;\n            case 2: \/\/ \u0e1b\u0e38\u0e48\u0e21\u0e17\u0e35\u0e48\u0e2a\u0e32\u0e21 \"Cancel\"\n                return PlatedCutoutsDialogResult.CANCEL;\n            default: \/\/ \u0e01\u0e23\u0e13\u0e35\u0e17\u0e35\u0e48\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e01\u0e14\u0e1b\u0e34\u0e14\u0e2b\u0e19\u0e49\u0e32\u0e15\u0e48\u0e32\u0e07 (X) \u0e2b\u0e23\u0e37\u0e2d\u0e04\u0e48\u0e32\u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\n                return PlatedCutoutsDialogResult.CANCEL;\n        }\n    }\n}<\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"654\" height=\"193\" src=\"https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-89.png\" alt=\"\" class=\"wp-image-282\" srcset=\"https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-89.png 654w, https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-89-300x89.png 300w\" sizes=\"auto, (max-width: 654px) 100vw, 654px\" \/><\/figure>\n\n\n\n<p>\u0e2d\u0e37\u0e21 \u0e41\u0e15\u0e48\u0e17\u0e33\u0e02\u0e19\u0e32\u0e14\u0e19\u0e35\u0e49\u0e01\u0e47\u0e43\u0e01\u0e25\u0e49\u0e40\u0e04\u0e35\u0e22\u0e07\u0e01\u0e31\u0e1a\u0e2a\u0e23\u0e49\u0e32\u0e07 custom dialog \u0e41\u0e25\u0e49\u0e27\u0e25\u0e48\u0e30\u0e19\u0e30<\/p>\n\n\n\n<p>\u0e41\u0e15\u0e48\u0e16\u0e49\u0e32\u0e44\u0e21\u0e48\u0e15\u0e01\u0e41\u0e15\u0e48\u0e07\u0e21\u0e32\u0e01 \u0e08\u0e30\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e40\u0e02\u0e35\u0e22\u0e19\u0e08\u0e1a\u0e43\u0e19\u0e44\u0e21\u0e48\u0e01\u0e35\u0e48\u0e1a\u0e23\u0e23\u0e17\u0e31\u0e14\u0e44\u0e14\u0e49\u0e40\u0e25\u0e22<\/p>\n\n\n\n<p>\u0e2d\u0e22\u0e32\u0e01\u0e43\u0e2a\u0e48 text field \u0e01\u0e47\u0e17\u0e33\u0e44\u0e14\u0e49\u0e40\u0e25\u0e22<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"244\" src=\"https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-90-1024x244.png\" alt=\"\" class=\"wp-image-285\" srcset=\"https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-90-1024x244.png 1024w, https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-90-300x71.png 300w, https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-90-768x183.png 768w, https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-90.png 1352w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>JOptionPane \u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e2a\u0e23\u0e49\u0e32\u0e07 dialog box \u0e17\u0e31\u0e48\u0e27\u0e44\u0e1b\u0e43\u0e2b\u0e49\u0e40\u0e23\u0e32\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e44\u0e14\u0e49 \u0e40\u0e0a\u0e48\u0e19 message box, confirm box \u0e2b\u0e23\u0e37\u0e2d input box \u0e41\u0e15\u0e48\u0e1a\u0e32\u0e07\u0e04\u0e23\u0e31\u0e49\u0e07\u0e40\u0e23\u0e32\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23 dialog&hellip;<\/p>\n","protected":false},"author":1,"featured_media":342,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,2],"tags":[],"class_list":["post-276","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-java","category-programming"],"_links":{"self":[{"href":"https:\/\/iotnoob.com\/wordpress\/wp-json\/wp\/v2\/posts\/276","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/iotnoob.com\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/iotnoob.com\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/iotnoob.com\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/iotnoob.com\/wordpress\/wp-json\/wp\/v2\/comments?post=276"}],"version-history":[{"count":3,"href":"https:\/\/iotnoob.com\/wordpress\/wp-json\/wp\/v2\/posts\/276\/revisions"}],"predecessor-version":[{"id":286,"href":"https:\/\/iotnoob.com\/wordpress\/wp-json\/wp\/v2\/posts\/276\/revisions\/286"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/iotnoob.com\/wordpress\/wp-json\/wp\/v2\/media\/342"}],"wp:attachment":[{"href":"https:\/\/iotnoob.com\/wordpress\/wp-json\/wp\/v2\/media?parent=276"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/iotnoob.com\/wordpress\/wp-json\/wp\/v2\/categories?post=276"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/iotnoob.com\/wordpress\/wp-json\/wp\/v2\/tags?post=276"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}