Question

Je veux que mon JTextPane pour insérer des espaces chaque fois que j'appuyez sur Tab. À l'heure actuelle, il insère le caractère de tabulation (ASCII 9).

Y at-il de toute façon de personnaliser la politique de l'onglet de JTextPane (autre que la capture d'événements et l'insertion des espaces « onglet-clés » me semble un)?

Était-ce utile?

La solution

Vous pouvez définir un javax.swing.text.Document sur votre JTextPane. L'exemple suivant vous donnera une idée de ce que je veux dire:)

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

Définir un DefaultStyleDocument pour faire le travail. Réglez ensuite le document à votre JTextPane.

Vive Kai

Autres conseils

Pour autant que je sache, vous auriez à attraper des événements clés, comme vous le dites. En fonction de l'utilisation, vous pouvez également vous en sortir avec attendre jusqu'à ce que l'entrée est soumise, et en changeant les onglets pour espaces à ce moment-là.

Vous pouvez essayer de sous-DefaultStyledDocument et classing insert primordial pour remplacer les onglets dans les éléments insérés avec des espaces. Installez ensuite votre sous-classe JTextPane avec setStyledDocument (). Cela peut être plus de mal que d'attraper des événements clés bien.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top