Groovy SwingBuilder : button to change the color of a panel

别来无恙 提交于 2019-12-04 17:33:47

To get the element based on it's ID, you need to access the ID as a parameter of the SwingBuilder, like so:

import groovy.swing.SwingBuilder
import javax.swing.WindowConstants as WC
import javax.swing.JOptionPane
import javax.swing.BoxLayout as BXL

swing = new SwingBuilder()
frame = swing.frame(title:'test', pack:true, visible:true, defaultCloseOperation:WC.DISPOSE_ON_CLOSE) {
    panel(id:'mainPanel'){
        (1..6).each { num ->
            def panelID = "panel$num"
            def pane = panel( alignmentX:0f, id:panelID, background:java.awt.Color.GREEN ) {
                label('description') 
                textField(id: "description$num", text:panelID, columns: 70 )
                button(id: "buttonpanel$num", text:panelID, actionPerformed : {
                    swing."$panelID".background = java.awt.Color.RED
                })
            }
        }
        boxLayout(axis: BXL.Y_AXIS)

        panel(id:'secondPanel' , alignmentX: 0f){                       
            button('Quit', actionPerformed:{
                frame.visible = false
            })
        }
    }       
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!