2011-06-14 151 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