在java netbeans swing中使用RSyntaxTextArea库进行语法高亮显示

在java netbeans swing中使用RSyntaxTextArea库进行语法高亮显示,java,swing,netbeans,Java,Swing,Netbeans,当我在一个单独的类中执行java语法时,文本会突出显示,例如。 TextEditorDemo,但在中执行代码时,不会得到相同的结果 未突出显示swing中JCombo框的操作侦听器,以及在此处使用rsyntaxtextarea object->语法初始化JtextArea msg1 TextEditorDemo.java import javax.swing.*; import org.fife.ui.rtextarea.*; import org.fife.ui.rsyntaxtextarea

当我在一个单独的类中执行java语法时,文本会突出显示,例如。 TextEditorDemo,但在中执行代码时,不会得到相同的结果 未突出显示swing中JCombo框的操作侦听器,以及在此处使用rsyntaxtextarea object->语法初始化JtextArea msg1

TextEditorDemo.java

import javax.swing.*;
import org.fife.ui.rtextarea.*;
import org.fife.ui.rsyntaxtextarea.*;

/**
 * A simple example showing how to use RSyntaxTextArea to add Java syntax
 * highlighting to a Swing application.<p>
 */
public class TextEditorDemo extends JFrame {

   public TextEditorDemo() {

      JPanel cp = new JPanel();

      RSyntaxTextArea syntaxTextArea = new RSyntaxTextArea(20, 60);
      syntaxTextArea.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_JAVA);
      // No other property of RSyntaxTextArea is allowed to use

      // You can now modify textArea object similar to any other JTextArea object to add other functionality
      JTextArea textArea = syntaxTextArea;
      JScrollPane sp = new JScrollPane(textArea);
      cp.add(sp);

      setContentPane(cp);
      setTitle("Text Editor Demo");
      setDefaultCloseOperation(EXIT_ON_CLOSE);
      pack();
      setLocationRelativeTo(null);
   }

   public static void main(String[] args) {
      // Start all Swing applications on the EDT.
      SwingUtilities.invokeLater(new Runnable() {
         public void run() {
            new TextEditorDemo().setVisible(true);
         }
      });
   }

}
上面的代码不起任何作用。实际上,您还没有将语法区域组件添加到框架中

不要创建新的RSyntaxArea对象

相反,您需要使syntaxTextArea成为类中的一个实例变量,然后您可以从侦听器中引用该变量,只需更改编辑样式属性

或者,如果由于某种原因,该类不允许您动态更改属性,则您需要使用:

sp.setViewportView(syntaxTextArea);
在您的侦听器代码中。在这种情况下,scrollpane变量现在需要是类中的实例变量

无论哪种方式,您都需要创建一个实例变量,该变量可以从ActionListener引用,因此您需要重新构造代码。阅读上的Swing教程。那里的演示代码将向您展示如何更好地构造类

private void language1ActionPerformed(java.awt.event.ActionEvent evt) {                                          
        RSyntaxTextArea syntaxTextArea = new RSyntaxTextArea(6, 20);

        String lang = (String) language1.getSelectedItem();
        syntaxTextArea.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_JAVA);
        msg1 = syntaxTextArea;
        msg1.setVisible(true);
sp.setViewportView(syntaxTextArea);