2011-06-14 106 views
1

我已经在这个页面运行下面的代码RsyntaxTextArea使用Java和我运行该程序完全按照本网站提到的方式。并且我得到的输出按预期。但我已经试图修改此Java代码Groovy代码,类似: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); 

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

回答

3

看起来你并不像你为RSyntaxTextArea导入包。你有没有尝试将以下输入添加到你的程序中?

import org.fife.ui.rtextarea.*; 
import org.fife.ui.rsyntaxtextarea.*; 
+0

它的工作原理,但我不能在我的挥杆得到'RsyntaxTextArea' 。我只得到框架和它的标题! – 2011-06-14 04:55:33

+1

+1,因为这解决了问题 – 2011-06-14 08:06:09

1

此代码应该做你想要什么?你需要对RSyntaxTextArea添加到视图(使用widget法)

你还需要将其添加到一个JScrollPane,使其滚动很好的时候充满。

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

中描述的问题什么是小部件?你能解释我吗? – 2011-06-14 12:30:38

+0

为什么我应该使用小部件而不是在'panel'中包含那些语句?原因是...... – 2011-06-14 12:31:09

+0

@ant因为如果你不使用'widget',它将不起作用。 'Widget'调用基本上是说“添加一个在SwingBuilder中未定义的组件” – 2011-06-14 12:42:58