2008-10-13 19 views
31

El editor de texto enriquecido debe implementarse en Java, proporcionar compatibilidad con Swing y, preferentemente, ser de código abierto.¿Alguien puede recomendar un editor de texto enriquecido Java?

Estoy buscando integrarlo en una aplicación Java/Swing existente.

Gracias.

+0

No tengo ni idea abt Swing, pero [jEdit] (http://www.jedit.org/) parece ser completamente Java ... Y su fuente abierta también – nawfal

Respuesta

23

Probablemente no sea tan sencillo como lo que buscaba ... pero JTextPane admite texto enriquecido y HTML. Es trivial conseguirlo en mostrar rtf o html, simplemente configure el tipo de codificación antes de llenarlo con contenido.

En cuanto a hacer los pequeños botones "B" y "I" modificando el estilo, bueno si se tratara de eso, en un apuro que no sería muy difícil de hacer. Think JButtons with Icons set. Sus oyentes obtienen las posiciones actuales de inicio y finalización de selección de JTextPane como esta: jpane.getSelectionStart() o jpane.getSelectionEnd() y luego insertan las etiquetas html/rtf de apertura y cierre en esas ubicaciones.

Deshacer también es fácil: mantenga una pila simple del contenido de cadena del Jpanel, cada vez que el usuario realiza una acción de edición, un simple history.push (jpane.getText()) almacenará el estado y lo deshará botón sería tan simple como jpane.setText (history.pop()).

E/usted podría hacer uno con B, I & Deshacer en torno a 30 minutos Calculo - otros botones como listas tomarán más tiempo, pero no es así.

+3

cómo manejar copiar/pegar de texto con estilo con este ¿enfoque? –

7

Puede insertar la madre de todos los editores de texto enriquecido de código abierto en una aplicación Swing: OpenOffice.org proporciona un "OOBean", con el que puede incrustar una instancia completa de OpenOffice en una aplicación Swing.

+3

Probablemente exagerado, pero definitivamente es la solución definitiva: D –

+0

Funciona bien. Pero no es una solución fácil, ya que el OOBean es un componente de peso pesado mientras que Swing es liviano. La combinación de ambos mecanismos no es ideal. – lvr123

5

Revisé y no puedo encontrar un archivo jar con solo un editor de texto. Sin embargo, aquí hay 2 otras opciones

Opción A Utilice Swing y construya uno usted mismo. Swing tiene muchos de los componentes ya cubiertos en javax.swing.text, aunque aún requiere una gran cantidad de código. Encontré un ejemplo here

Opción B Código de búsqueda de un proyecto de código abierto. Encontré 2 proyectos con editores de tipo HTML WYSIWYG realmente agradables que se pueden extraer (ambos están incluidos en unas pocas clases).

  1. Memoranda (GPL): Su edición de texto o está en net.sf.memoranda.ui.htmleditor.HTMLEditor. Es un JPanel y solo usa otra clase.
  2. Ekit (LGPL): Es un editor WYSIWYG Html con todas las funciones. Su clase com.hexidec.ekit.EkitCore es un JPanel y parece bastante multipropósito, aunque usa muchas otras clases del paquete.

También hay un montón de los comerciales disponibles, suponiendo que tiene un presupuesto :)

4

Tenga una mirada en JWord o JRichTextEditor

JWord es un editor de texto enriquecido giro comercial, con mesas, paginación y soporte RTF/opendoc/XML. También admite encabezado/pie de página, diseño de múltiples columnas, exportación de HTML, SVG, WMF, etc.

JRichTextEditor es un widget de código abierto swing, está bastante bien para tomar notas. Admite imágenes, un formato XML simple para almacenamiento, exportación a PDF, HTML. No tan avanzado como JWord, pero de código abierto.

Podría ayudar.

10

Pruebe MetaPhase editor, según Charles Bell's HTMLDocumentEditor. Tiene licencia de LGPL v3 y es excelente, particularmente como un ejemplo del uso del StyledEditorKit, discutido here.

+0

Si bien contiene algunos errores, tiene suficientes características listas para usar. Estoy buscando ahora qué tan extensible es todo el sistema. Tal vez uno puede exprimir un par de características más (como agregar una imagen desde la unidad de disco) .. – pek

+2

La URL anterior parece estar muerta, intente esto: http://kenai.com/projects/metaphaseeditor. –

Cuestiones relacionadas