如何使用Groovy构建一个简单的IDE?
下面是这个问题。我想为groovy和Java创建一个简单的IDE。此处复制代码以便于参考:如何使用Groovy构建一个简单的IDE?,groovy,Groovy,下面是这个问题。我想为groovy和Java创建一个简单的IDE。此处复制代码以便于参考: import groovy.swing.SwingBuilder import java.awt.BorderLayout as BL import static javax.swing.JFrame.EXIT_ON_CLOSE import org.fife.ui.rsyntaxtextarea.* RSyntaxTextArea textArea = new RSyntaxTextArea() te
import groovy.swing.SwingBuilder
import java.awt.BorderLayout as BL
import static javax.swing.JFrame.EXIT_ON_CLOSE
import org.fife.ui.rsyntaxtextarea.*
RSyntaxTextArea textArea = new RSyntaxTextArea()
textArea.syntaxEditingStyle = SyntaxConstants.SYNTAX_STYLE_JAVA
swing = new SwingBuilder()
frame = swing.frame(title:"test", defaultCloseOperation:EXIT_ON_CLOSE, size:[600,400], show:true ) {
borderLayout()
panel( constraints:BL.CENTER ) {
borderLayout()
scrollPane( constraints:BL.CENTER ) {
widget textArea
}
}
}
现在我有了用户在textarea
中输入的所有编码,这是rsynataxtarea
的对象,我应该如何对用户编写的所有代码执行编译?在Groovy中是否有用于此目的的类或任何方法
提前谢谢 如果您查看groovy源代码下载的
src/main/groovy/ui
文件夹,您将看到使groovyConsole工作的代码
如果查看ConsoleSupport
类,您将看到控制台的工作方式:
protected Object evaluate(String text) {
String name = "Script" + counter++;
try {
return getShell().evaluate(text, name);
}
catch (Exception e) {
handleException(text, e);
return null;
}
}
其中getShell()
是:
public GroovyShell getShell() {
if (shell == null) {
shell = new GroovyShell();
}
return shell;
}
因此,它返回一个新的
GroovyShell
,如果已经存在,则返回一个退出的无法获取。。那么,我到底要如何处理我的代码呢?从RSyntaxTextArea获取文本,并使用一个实例GroovyShell
?我尝试添加这一行GroovyShell anto=ConsoleSupport.evaluate(textArea.getText())
。但是我得到了一个错误,因为没有方法的签名:static groovy.ui.ConsoleSupport.evaluate()适用于参数类型:(java.lang.String)值:[]
。。我哪里出错了??!ConsoleSupport
中的代码向您展示了Groovy控制台是如何做到这一点的(这基本上正是您试图编写的)。您需要这样的内容:newgroovyshell().evaluate(textArea.text,“Script${System.currentTimeMillis()}”)