



Насколько я знаю, как вы говорите, вам придется ловить ключевые события. В зависимости от использования вам также может сойти с рук ожидание отправки ввода и замена вкладок на пробелы в это время.
Вы можете попробовать подклассифицировать DefaultStyledDocument и переопределить insert, чтобы заменить любые табуляции во вставленных элементах пробелами. Затем установите свой подкласс в JTextPane с помощью setStyledDocument (). Однако это может быть больше проблем, чем улавливание ключевых событий.
Вы можете установить javax.swing.text.Document на свой JTextPane. Следующий пример даст вам представление о том, что я имею в виду :)
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);
}
}
}
Определите DefaultStyleDocument для выполнения работы. Затем установите документ в свой JTextPane.
Ваше здоровье Кай