Swing 使用Groovy UI按钮调用Groovy脚本

Swing 使用Groovy UI按钮调用Groovy脚本,swing,groovy,Swing,Groovy,我目前正在用Groovy Swing builder构建一个UI,我想在单击按钮时调用另一个脚本 我的代码: panel(alignmentX:0f) { flowLayout(alignment:FL.LEFT) button('Import KM', actionPerformed: { vars.dialogResult = 'Import KM' gshell.evaluate(new File("ImportKnowledgeModules.groovy

我目前正在用Groovy Swing builder构建一个UI,我想在单击按钮时调用另一个脚本

我的代码:

panel(alignmentX:0f) {
    flowLayout(alignment:FL.LEFT)
    button('Import KM', actionPerformed: {
    vars.dialogResult = 'Import KM'
    gshell.evaluate(new File("ImportKnowledgeModules.groovy")) 
})
新脚本也与调用脚本位于同一目录中。但当我点击“导入KM”按钮时,什么也没有发生


这里我遗漏了什么?

考虑到第二个脚本路径必须是相对于运行
groovy
命令的路径,而不是相对于UI-groovy脚本的路径

示例:我从中获取原始代码,并将其保存为
swing.groovy
,然后更改click me
按钮
,以像您一样调用
swing.groovy
本身。最后,我在
swing.groovy
中有以下代码:

import groovy.swing.SwingBuilder
import java.awt.BorderLayout as BL
import groovy.lang.GroovyShell

count = 0
new SwingBuilder().edt {
  frame(title: 'Frame', size: [300, 300], show: true) {
    borderLayout()
    textlabel = label(text: 'Click the button!', constraints: BL.NORTH)
    button(text:'Click Me',
         actionPerformed: {
             println "click :P"
             new GroovyShell().evaluate(new File('swing.groovy'))    
         }, constraints:BL.SOUTH)
  }
}
如果我运行
groovy swing.groovy
,按钮将正确计算脚本,UI将递归显示。但是,如果我从另一个路径运行groovy,比如
groovy./Scripts/swing.groovy
,那么我必须从代码中将路径更改为
newgroovyshell().evaluate(新文件('./Scripts/swing.groovy'))
,以便正确引用它

希望有帮助