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í.
No tengo ni idea abt Swing, pero [jEdit] (http://www.jedit.org/) parece ser completamente Java ... Y su fuente abierta también – nawfal