2010-01-07 18 views
6

Estoy escribiendo una aplicación que el usuario necesita para escribir un script de JavaScript como entrada, ahora tengo un JTextArea simple pero me gustaría cambiarlo con algo que hará algunos destacados y coloreado de código para hacer que el guión sea más coherente.swing text editor that color and highlight

¿conoces alguna cosa de código abierto que hace eso?

gracias

+0

¿Editor basado en web? – Upperstage

Respuesta

0

Echa un vistazo a lo que el NetBeans Platform proporciona. Sé que publican componentes como archivos JAR, pero no están disponibles en el repositorio central de Maven, lo que me ha impedido usarlos.

3

Probar jEdit. Es principalmente un editor escrito en Java y no un componente editor. Pero quizás puedas extraer el componente editor del archivo jar.

Solo una idea.

+1

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

1

Componente oscilante estándar JEditorPane lo hará.

ACTUALIZACIÓN: Salida del API y tutorial

+0

Fuera de la caja, o ¿tiene que crear un 'EditorKit' /' Document' que analiza el texto y proporciona el resaltado? – kdgregory

+0

@kdgregory Por defecto, JEditorPane conoce html, rtf y texto sin formato. Pero se pueden configurar más kits/documentos –

10

RSyntaxTextArea

RSyntaxTextArea es un componente de texto resaltado de sintaxis para Java Swing. Extiende JTextComponent para que se integre por completo con el paquete estándar javax.swing.text. Es rápido y eficiente, y se puede usar en cualquier aplicación que necesite editar o ver el código fuente.

RSyntaxTextArea fue originalmente parte del editor de texto del programador RText, pero actualmente se está convirtiendo en un componente separado, reutilizable en cualquier aplicación Swing.

Captura de pantalla:

enter image description here

1

supongo, por lo que supuse, necesita algo más que JTextArea, para que pueda mostrar cosas diferentes en diferentes colores. Bueno, eso se puede hacer usando un JTextPane o un JEditorPane.

Aquí le proporciono un ejemplo simple de cómo proporcionar JTextPane con un mensaje específico para imprimir y el color de ese mensaje.

puede cambiar los colores de cualquier texto de entrada, de modo que pueda mostrar distintos colores para cada palabra.

// 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); 
} 

Así que si usted llama como esto appendToPane("HI", Color.RED, "Lucida Console") se mostrará HI en rojo con la fuente especificada. y si llama al appendToPane(" THERE", Color.BLACK, "TIMES NEW ROMAN") , entonces HABRÁ impreso en color negro en el mismo lugar al lado de Hola.

Cuestiones relacionadas