2014-12-11 66 views
0

我想將變量的值(== i)放在文本字段中,以便將其值顯示在文本字段中,即從1變爲10.使用groovy和SwingBuilder更改文本字段中的值

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: ? 
    } 
} 

回答

0

您可以使用doOutside方法SwingBuilder來實現,該方法允許在EDT之外運行閉包。下面的代碼做你正在做的事情(用表格佈局而不是網格佈局)。

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)) } 
     } 
    } 
} 
相關問題