2010-01-07 6 views
6

Ich schreibe eine Anwendung, die der Benutzer ein JavaScript-Skript als Eingabe schreiben muss, habe ich jetzt eine einfache JTextArea, aber ich möchte es mit etwas ändern, die einige Highlights tun und Code-Färbung, um das Skript kohärenter zu machen.swing Text-Editor, dass Farbe und highlight

Kennen Sie irgendwelche Open-Source-Sache, die das tut?

dank

+0

Webbasierter Editor? – Upperstage

Antwort

0

Werfen Sie einen Blick auf das, was die NetBeans Platform zur Verfügung stellt. Ich weiß, dass sie Komponenten als JAR-Dateien veröffentlichen, aber sie sind nicht im Maven Central Repo verfügbar, was mich davon abgehalten hat, irgendwelche zu verwenden.

3

Versuchen Sie jEdit. Es ist hauptsächlich ein in Java geschriebener Editor und keine Editor-Komponente. Aber vielleicht können Sie die Editor-Komponente aus der JAR-Datei extrahieren.

Nur eine Idee.

+1

http://syntax.jedit.org/ – Mark

1

Standard JEditorPane Swing-Komponente wird es tun.

UPDATE: Überprüfen Sie die API und tutorial aus

+0

Out of the Box, oder müssen Sie ein 'EditorKit' /' Dokument' erstellen, das den Text analysiert und die Hervorhebung bereitstellt? – kdgregory

+0

@ kdgregory Standardmäßig kennt JEditorPane HTML, RTF und Klartext. Aber mehr Kits/Dokumente können konfiguriert werden –

10

RSyntaxTextArea

RSyntaxTextArea ist eine Syntax-Hervorhebung Textkomponente für Java Swing. Es erweitert JTextComponent so, dass es vollständig in das Standardpaket javax.swing.text integriert wird. Es ist schnell und effizient und kann in jeder Anwendung verwendet werden, die Quellcode bearbeiten oder anzeigen muss.

RSyntaxTextArea war ursprünglich Teil des Texteditors des RText-Programmierers, wird jedoch derzeit in eine separate Komponente umgewandelt, die in jeder Swing-Anwendung wiederverwendet werden kann.

Screenshot:

enter image description here

1

Ich denke, so weit wie ich vermutete, müssen Sie etwas anderes als JTextArea, so dass man verschiedene Dinge in verschiedenen Farben anzeigen kann. Nun, das kann mit einem JTextPane oder einem JEditorPane gemacht werden.

Hier gebe ich Ihnen ein einfaches Beispiel, wie Sie JTextPane mit einer bestimmten Nachricht zum Drucken und Farbe dieser Nachricht zur Verfügung stellen.

Sie können die Farben für jeden Eingabetext ändern, so dass für jedes Wort unterschiedliche Farben angezeigt werden können.

// This is in javax.swing.JTextPane; 
JTextPane tPane = new JTextPane(); 

/* Method to put text in this textPane with colour of your choice 
* For this you need these classes. 
* import javax.swing.text.AttributeSet; 
* import javax.swing.text.SimpleAttributeSet; 
* import javax.swing.text.StyleConstants; 
* import javax.swing.text.StyleContext; 
*/ 

protected static void appendToPane(String msg, Color c,String f) 
{ 
    StyleContext sc = StyleContext.getDefaultStyleContext(); 
    AttributeSet aset = sc.addAttribute(SimpleAttributeSet.EMPTY, StyleConstants.Foreground, c); 
    aset = sc.addAttribute(aset, StyleConstants.FontFamily, f); 

    int len = tPane.getDocument().getLength(); 
    tPane.setCaretPosition(len); 
    tPane.setCharacterAttributes(aset, false); 
    tPane.replaceSelection(msg); 
} 

So rufen Sie, wenn Sie so appendToPane("HI", Color.RED, "Lucida Console") es HALLO mit bestimmten Schriftart in rot angezeigt werden soll. und wenn Sie rufen sagen appendToPane(" THERE", Color.BLACK, "TIMES NEW ROMAN") dann wird in schwarzer Farbe an der gleichen Stelle neben Hi gedruckt werden.