Frage

Ich möchte meine JTextPane Räume einfügen, wenn ich Tab drücken. Derzeit setzt sie die Tab-Zeichen (ASCII 9).

Gibt es trotzdem auf die Registerkarte Politik der JTextPane (außer Fang „Tab-Taste“ Ereignisse und Einsetzen der Räume selbst eine scheint) anpassen?

War es hilfreich?

Lösung

Sie können eine javax.swing.text.Document auf JTextPane gesetzt. Das folgende Beispiel gibt Ihnen eine Vorstellung davon, was ich meine:)

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

Definieren Sie eine DefaultStyleDocument die Arbeit zu tun. Setzen Sie dann das Dokument auf Ihren JTextPane.

Prost Kai

Andere Tipps

Soweit ich weiß, würden Sie wichtige Ereignisse fangen müssen, wie Sie sagen. Je nach Nutzung könnte man auch mit zu warten, bis der Eingang weg gestellt wird, und Ändern Tabulator in Leerzeichen zu dieser Zeit.

Sie könnten versuchen, Unter Klassierung DefaultStyledDocument und überwiegenden Einsatzes alle Registerkarten in den eingefügten Elementen mit Leerzeichen zu ersetzen. Installieren Sie dann Ihre Unterklasse in JTextPane mit setStyledDocument (). Dies kann mehr Probleme als wenn wichtige Ereignisse zu kontrollieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top