{"id":617,"date":"2011-03-23T10:14:52","date_gmt":"2011-03-23T08:14:52","guid":{"rendered":"https:\/\/bob-team.de\/wordpress\/?p=617"},"modified":"2023-12-29T10:39:00","modified_gmt":"2023-12-29T09:39:00","slug":"groovy-gui","status":"publish","type":"post","link":"https:\/\/bob-team.de\/wordpress\/2011\/03\/23\/groovy-gui\/","title":{"rendered":"Groovy GUI"},"content":{"rendered":"<p>Folgendes Skript erzeugt eine kleine Oberfl\u00e4che mittels Groovy. Zum Einsatz kommen unter anderem <a href=\"https:\/\/marketsplash.com\/tutorials\/groovy\/groovy-swingbuilder\/\">verschiedene SwingBuilder-Komponenten<\/a> und <a href=\"http:\/\/download.oracle.com\/javase\/tutorial\/uiswing\/layout\/gridbag.html\">das GridBagLayout<\/a>.<!--more--><\/p>\n<pre lang=\"groovy\">package bob.pokolm.usage\r\n\r\nimport groovy.swing.SwingBuilder\r\nimport javax.swing.WindowConstants as WC\r\nimport java.awt.BorderLayout as BL\r\nimport java.awt.GridBagConstraints\r\nimport java.awt.FlowLayout\r\nimport javax.swing.filechooser.FileFilter\r\nimport javax.swing.JFileChooser\r\nimport javax.swing.UIManager\r\n\r\n\r\ndef swing = new groovy.swing.SwingBuilder()\r\n\r\ncreateFileChooserButton = { t, c ->\r\n    int h = t.preferredSize.height\r\n    b = swing.button(\r\n        borderPainted: false, contentAreaFilled: false, constraints: c,\r\n        preferredSize: [h,h], minimumSize: [h,h],\r\n        icon: UIManager.getIcon(\"FileChooser.newFolderIcon\"),\r\n        actionPerformed:{\r\n            fc = swing.fileChooser(\r\n                dialogTitle:\"Verzeichnis w\u00e4hlen\",\r\n                fileSelectionMode : JFileChooser.DIRECTORIES_ONLY\r\n            )\r\n            if (fc.showOpenDialog() == JFileChooser.APPROVE_OPTION) {\r\n                t.text = fc.selectedFile;\r\n            }\r\n        })\r\n    return b\r\n}\r\n\r\ndef frame = swing.frame(title:'SwingDemo',\r\n    defaultCloseOperation: WC.EXIT_ON_CLOSE) {\r\n\r\n    gridBagLayout()\r\n\r\n    label(text:\"Pfad 1:\", constraints:gbc(gridx:0, gridy:0, insets:[5,5,0,0]))\r\n    t1 = textField(text:\"\", columns: 30, enabled:false, \r\n        constraints:gbc(gridx:1, gridy:0, weightx:1.0,\r\n            fill:GridBagConstraints.HORIZONTAL, insets:[5,5,0,0]))\r\n    createFileChooserButton(t1, gbc(gridx:2, gridy:0, insets:[5,2,0,2]));\r\n    \r\n    label(text:\"Pfad 2:\", constraints:gbc(gridx:0, gridy:1, insets:[5,5,0,0]))\r\n    t2 = textField(text:\"\", columns: 30, enabled:false, \r\n        constraints:gbc(gridx:1, gridy:1, weightx:1.0,\r\n            fill:GridBagConstraints.HORIZONTAL, insets:[5,5,0,0]))\r\n    createFileChooserButton(t2, gbc(gridx:2, gridy:1, insets:[5,2,0,2]));\r\n\r\n    panel (constraints:gbc(gridx:0, gridy:2, weightx:1.0, weighty:1.0,\r\n            gridwidth:GridBagConstraints.REMAINDER,\r\n            anchor:GridBagConstraints.LAST_LINE_END, insets:[15,0,0,0])) {\r\n        borderLayout(hgap: 5)\r\n        emptyBorder([5,5,5,5], parent:true)\r\n        cb = comboBox(items:['Aktion 1', 'Aktion 2'], constraints: BL.CENTER)\r\n        button(text:'Ausf\u00fchren', actionPerformed: {\r\n                println \"Aktion: ${cb.selectedItem}\"\r\n            }, constraints: BL.EAST)\r\n    }\r\n\r\n}\r\nframe.pack()\r\nframe.show()<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Folgendes Skript erzeugt eine kleine Oberfl\u00e4che mittels Groovy. Zum Einsatz kommen unter anderem verschiedene SwingBuilder-Komponenten und das GridBagLayout.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[51],"class_list":["post-617","post","type-post","status-publish","format-standard","hentry","category-java","tag-groovy","entry"],"_links":{"self":[{"href":"https:\/\/bob-team.de\/wordpress\/wp-json\/wp\/v2\/posts\/617","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bob-team.de\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bob-team.de\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bob-team.de\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/bob-team.de\/wordpress\/wp-json\/wp\/v2\/comments?post=617"}],"version-history":[{"count":5,"href":"https:\/\/bob-team.de\/wordpress\/wp-json\/wp\/v2\/posts\/617\/revisions"}],"predecessor-version":[{"id":3383,"href":"https:\/\/bob-team.de\/wordpress\/wp-json\/wp\/v2\/posts\/617\/revisions\/3383"}],"wp:attachment":[{"href":"https:\/\/bob-team.de\/wordpress\/wp-json\/wp\/v2\/media?parent=617"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bob-team.de\/wordpress\/wp-json\/wp\/v2\/categories?post=617"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bob-team.de\/wordpress\/wp-json\/wp\/v2\/tags?post=617"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}