gpt4 book ai didi

java - 在使用 SwingBuilder 构建的 UI 中显示来自 Java 线程的变量

转载 作者:太空宇宙 更新时间:2023-11-04 14:17:59 25 4
gpt4 key购买 nike

java源码:

class jview implements Runnable{
public void run(){
for(int i=1;i<10;i++){
try {
Thread.sleep(1000);
System.out.println(i); // XXX show in UI
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args)throws Exception{
String[] roots = new String[] {"C:/Users/groovy"};
GroovyScriptEngine gse = new GroovyScriptEngine(roots);
Binding binding = new Binding();
gse.run("gview.groovy", binding);
jview j = new jview();
Thread t = new Thread(j);
t.start();
}
}

常规来源:

def swingBuilder = new SwingBuilder()
swingBuilder.edt {
frame(title: 'ex', size: [200, 150], show: true) {
borderLayout(vgap: 5)
panel(constraints: BorderLayout.CENTER, border: emptyBorder(10)) {
label "java variable" // XXX value of `i`
}
}
}

如何在 Swing UI(来自 Groovy)中的 Java 线程中显示变量 i

最佳答案

首先,创建一个在 run 方法中更新的 JTextField:

static JTextField textField = new JTextField("Init...", 5);

public void run() {
for(int i = 1; i < 10; i++){
try {
Thread.sleep(1000);
textField.setText(String.valueOf(i)); // Update UI
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}

将其传递到脚本绑定(bind)中:

    GroovyScriptEngine gse = new GroovyScriptEngine(roots);
Binding binding = new Binding();
binding.setVariable("variableTextField", textField);
gse.run("gview.groovy", binding);

然后,在groovy代码中,您可以使用widgettextField “放入”构建器中:

swingBuilder.edt {   
frame(title: 'ex', size: [200, 150], show: true, defaultCloseOperation: EXIT_ON_CLOSE) {
borderLayout(vgap: 5)

panel(constraints: BorderLayout.CENTER, border: emptyBorder(10)) {
tableLayout(cellpadding: 5) {
tr {
td {
label 'Value'
}
td {
widget(variableTextField)
}
}
}
}
}
}

基本上,通过此操作,您可以在 Java 中执行 doOutsidesetMessageChanging value in textfield with groovy and SwingBuilder 中执行的操作。 .

关于java - 在使用 SwingBuilder 构建的 UI 中显示来自 Java 线程的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27496488/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com