groovyConsole - Groovy Swing 控制台
1. Groovy : Groovy 控制台
Groovy Swing 控制台允许用户输入和运行 Groovy 脚本。本页记录了此用户界面的功能。
2. 基础
-
Groovy 控制台通过
groovyConsole
或groovyConsole.bat
启动,两者都位于$GROOVY_HOME/bin
中 -
控制台包含一个输入区域和一个输出区域。
-
您可以在输入区域中键入 Groovy 脚本。
-
当您从“操作”菜单中选择“运行”时,控制台会编译脚本并运行它。
-
通常会打印在
System.out
上的任何内容都将在输出区域中打印。 -
如果脚本返回非空结果,则会打印该结果。
3. 功能
3.1. 命令行选项和参数
Groovy 控制台支持多种选项来控制类路径和其他功能。
./bin/groovyConsole --help
Usage: groovyConsole [options] [filename]
The Groovy Swing Console allows a user to enter and run Groovy scripts.
--configscript=PARAM A script for tweaking the compiler configuration options
-cp, -classpath, --classpath
Specify where to find the class files - must be first
argument
-D, --define=<name=value> Define a system property
-h, --help Display this help message
-pa, --parameters Generate metadata for reflection on method parameter
names (jdk8+ only)
-pr, --enable-preview Enable preview Java features (jdk12+ only)
-V, --version Display the version
3.2. 运行脚本
您可以使用多个快捷键来运行脚本或代码片段
-
Ctrl+Enter
和Ctrl+R
都是运行脚本
的快捷键。 -
如果您只突出显示输入区域中的部分文本,则 Groovy 将只运行该文本。
-
脚本的结果是执行的最后一个表达式的值。
-
您可以通过从“操作”菜单中选择“捕获 System.out”来打开和关闭 System.out 捕获
3.3. 编辑文件
您可以打开任何文本文件,编辑它,运行它(作为 Groovy 脚本),然后在完成时再次保存它。
-
选择“文件 > 打开”(快捷键
ctrl+O
)打开文件 -
选择“文件 > 保存”(快捷键
ctrl+S
)保存文件 -
选择“文件 > 新建文件”(快捷键
ctrl+Q
)从空白输入区域重新开始
3.4. 历史记录和结果
-
您可以通过从“操作”菜单中选择“检查最后”在最后一个(非空)结果上弹出 GUI 检查器。检查器是查看列表和映射的便捷方式。
-
控制台会记住最后十次脚本运行。您可以通过从“编辑”菜单中选择“下一个”和“上一个”来在历史记录中来回滚动。
Ctrl-N
和ctrl-P
是方便的快捷键。 -
最后一个(非空)结果绑定到名为
_
(下划线)的变量。 -
每次运行的最后一个结果(空和非空)都绑定到名为
__
(两个下划线)的列表变量中。最后一次运行的结果是__[-1]
,倒数第二次运行的结果是__[-2]
,依此类推。
3.5. 中断脚本
Groovy 控制台是开发脚本的非常方便的工具。通常,您会发现自己多次运行脚本,直到它按您想要的方式工作。但是,如果您的代码需要太长时间才能完成,或者更糟的是,创建了一个无限循环,该怎么办?可以通过单击脚本执行时弹出的一个小对话框上的“中断”按钮,或通过工具栏中的“中断”图标来中断脚本执行。
但是,这可能不足以中断脚本:单击该按钮将中断执行线程,但如果您的代码没有处理中断标志,脚本可能会继续运行而您无法有效地停止它。为了避免这种情况,您必须确保“脚本 > 允许中断”菜单项已选中。这将自动将 AST 转换应用到您的脚本中,该转换将处理检查中断标志(@ThreadInterrupt
)。这样,即使您没有显式地处理中断,您也可以保证脚本可以被中断,但代价是额外的执行时间。
3.6. 等等
-
您可以通过从“操作菜单”中选择“字体变小”或“字体变大”来更改字体大小
-
由于
groovy.ui.ConsoleApplet
,控制台可以作为 Applet 运行 -
当您按下回车键时,代码会自动缩进
-
您可以将 Groovy 脚本拖放到文本区域以打开文件
-
您可以通过从“脚本”菜单中将新 JAR 或目录添加到类路径中来修改控制台中运行的脚本使用的类路径
-
当预期编译错误或抛出异常时,从输出区域中的错误超链接
4. 嵌入控制台
要将 Swing 控制台嵌入您的应用程序,只需创建 Console 对象,加载一些变量,然后启动它。控制台可以嵌入 Java 或 Groovy 代码中。用于此的 Java 代码是
import groovy.ui.Console;
...
Console console = new Console();
console.setVariable("var1", getValueOfVar1());
console.setVariable("var2", getValueOfVar2());
console.run();
...
控制台启动后,您可以在 Groovy 代码中使用变量值。
5. 可视化脚本输出结果
您可以自定义可视化脚本输出结果的方式。让我们看看如何自定义它。例如,查看映射结果将显示如下内容
您在这里看到的是映射的通常文本表示。但是,如果我们启用了某些结果的自定义可视化,会怎么样?Swing 控制台允许您执行此操作。首先,您必须确保选中可视化选项:“查看 → 可视化脚本结果”——记录一下,Groovy 控制台的所有设置都通过首选项 API 存储和记住。内置了一些结果可视化:如果脚本返回 java.awt.Image
、javax.swing.Icon
或没有父级的 java.awt.Component
,则会显示该对象而不是其 toString()
表示。否则,其他所有内容都只表示为文本。现在,在 ~/.groovy/OutputTransforms.groovy
中创建以下 Groovy 脚本
import javax.swing.*
transforms << { result ->
if (result instanceof Map) {
def table = new JTable(
result.collect{ k, v ->
[k, v?.inspect()] as Object[]
} as Object[][],
['Key', 'Value'] as Object[])
table.preferredViewportSize = table.preferredSize
return new JScrollPane(table)
}
}
Groovy Swing 控制台将在启动时执行该脚本,将转换列表注入脚本的绑定中,以便您可以添加自己的脚本结果表示。在我们的例子中,我们将映射转换为外观不错的 Swing JTable。我们现在能够以友好且有吸引力的方式可视化映射,如下面的屏幕截图所示
6. 高级调试:AST 浏览器
Groovy 控制台可以可视化表示当前正在编辑的脚本的 AST(抽象语法树),如下面的屏幕截图所示。当您想了解 AST 转换的工作原理时,这很有用,特别是如果您正在开发自己的 AST 转换时。在下面的示例中,我们用 @Immutable
注解了我们的类,Groovy 编译器为我们生成了大量样板代码。我们可以在“源代码”选项卡中看到生成的 equals 方法的代码。
我们甚至可以检查编译器生成的 JVM 字节码。在下图中,我们查看了 Groovy 表达式 LocalDate.parse('2020/02/10', 'yyyy/MM/dd')
的字节码。
7. 高级调试:CST 浏览器
Groovy 控制台可以可视化表示脚本初始解析的 CST(具体语法树)。这主要对解析大师有用。