首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用groovy和SwingBuilder更改textfield中的值

用groovy和SwingBuilder更改textfield中的值
EN

Stack Overflow用户
提问于 2014-12-11 04:55:12
回答 1查看 1.5K关注 0票数 0

我希望将变量(==i)的值放在textfield中,以便将其值显示在textfield中,即从1更改为10。

代码语言:javascript
复制
def sb = new SwingBuilder()
def th = Thread.start {
    for(i in 1..10) {
        sleep 2000
    }
}
def Pan = sb.panel(layout: new BorderLayout()) {
    sb.panel(constraints: BorderLayout.NORTH){
        gridLayout(cols: 2, rows: 3)
        textField id:'tf', text: ?
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-11 10:22:27

您可以使用doOutside方法SwingBuilder来实现这一点,该方法允许在EDT之外运行闭包。下面的代码完成了您想要做的事情(使用表布局而不是网格布局)。

代码语言:javascript
复制
import groovy.swing.SwingBuilder  
import static javax.swing.JFrame.EXIT_ON_CLOSE  
import java.awt.*

def swingBuilder = new SwingBuilder()

swingBuilder.edt {   
    def message

    def setMessage = { String s -> message.setText(s) }

    frame(title: 'Example', size: [200, 150], show: true, locationRelativeTo: null, defaultCloseOperation: EXIT_ON_CLOSE) { 
        borderLayout(vgap: 5)

        panel(constraints: BorderLayout.CENTER, border: emptyBorder(10)) {
            tableLayout(cellpadding: 5) {
                tr {
                    td {
                        label 'Value'  // text property is default, so it is implicit.
                    }
                    td {
                        message = textField(id: 'tf', columns: 5, text: '0')
                    }
                }
            }           
        }
    }

    doOutside {
        for (i in 1..10) {
            sleep 1000
            edt { setMessage(String.valueOf(i)) }
        }
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27415601

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档