1

我已经使用 Java 在此页面RsyntaxTextArea中运行了以下代码,并且我完全按照本网站中提到的方式运行程序。并且我得到了预期的输出。但我试图将此java代码修改为Groovy代码,例如:

import groovy.swing.SwingBuilder
import javax.swing.*
import java.awt.*
swing =  new SwingBuilder()
frame = swing.frame(title : "test", defaultCloseOperation:JFrame.EXIT_ON_CLOSE, pack:true, show : true, size :[100,100])
{
        panel
        {
             RSyntaxTextArea textArea = new RSyntaxTextArea();
             textArea.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_JAVA);
        }
}

当我尝试按如下方式运行此脚本时:

groovyc -classpath rsyntaxtextarea.jar TextEditorDemo.groovy 

我收到错误说明:

groovy: 9: unable to resolve class RSyntaxTextArea 
 @ line 9, column 19.
        RSyntaxTextArea textArea = new RSyntaxTextArea();
                     ^

/home/anto/Groovy/Rsyntax/ST.groovy: 9: unable to resolve class RSyntaxTextArea 
 @ line 9, column 30.
        RSyntaxTextArea textArea = new RSyntaxTextArea();
                                ^

/home/anto/Groovy/Rsyntax/ST.groovy: 10: unable to resolve class RSyntaxTextArea 
 @ line 10, column 7.
         textArea.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_JAVA);

我想我在运行程序时犯了错误。在这种情况下,我如何通过定义类路径来运行程序。

4

2 回答 2

3

看起来您不是在为 RSyntaxTextArea 导入包。您是否尝试将以下导入添加到您的程序中?

import org.fife.ui.rtextarea.*;
import org.fife.ui.rsyntaxtextarea.*;
于 2011-06-14T04:43:27.913 回答
1

这段代码应该做你想做的事......你需要添加RSyntaxTextArea到视图中(使用widget方法)

您还需要将它添加到 aJScrollPane中,以便它在满时很好地滚动。

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

编辑

如果不使用小部件,您的代码将需要如下所示:

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()
    sp = scrollPane( constraints:BL.CENTER )
    sp.viewport.add textArea
  }
}
于 2011-06-14T07:59:04.243 回答