para - que es un jeditorpane en java
Establecer la política de tabulación en JTextPane de Swing (3)
Podría intentar subclasificar DefaultStyledDocument e invalidar insert para reemplazar las pestañas de los elementos insertados con espacios. Luego instale su subclase en JTextPane con setStyledDocument (). Sin embargo, esto puede ser más problemas que atrapar eventos clave.
Quiero que mi JTextPane inserte espacios cada vez que presiono Tab. Actualmente inserta el carácter de tabulación (ASCII 9).
¿Hay alguna forma de personalizar la política de tabulación de JTextPane (aparte de capturar eventos de "tab-key" e insertar los espacios parece ser un)?
Por lo que sé, tendrías que atrapar eventos clave, como dices. Dependiendo del uso, también puede salirse con la espera hasta que se envíe la entrada y cambiar las pestañas a espacios en ese momento.
Puede establecer un javax.swing.text.Document en su JTextPane. El siguiente ejemplo te dará una idea de lo que quiero decir :)
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JTextPane;
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.DefaultStyledDocument;
public class Tester {
public static void main(String[] args) {
JTextPane textpane = new JTextPane();
textpane.setDocument(new TabDocument());
JFrame frame = new JFrame();
frame.getContentPane().add(textpane);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(new Dimension(200, 200));
frame.setVisible(true);
}
static class TabDocument extends DefaultStyledDocument {
@Override
public void insertString(int offs, String str, AttributeSet a) throws BadLocationException {
str = str.replaceAll("/t", " ");
super.insertString(offs, str, a);
}
}
}
Defina un DefaultStyleDocument para hacer el trabajo. Luego configura el documento en tu JTextPane.
Saludos Kai