小编典典

在Swing的JTextPane中设置标签策略

java

我希望我的JTextPane每次按Tab时都插入空格。当前,它会插入制表符(ASCII 9)。

无论如何,有没有自定义JTextPane的选项卡策略(除了捕获“ tab-key”事件并自己插入空格外)?


阅读 218

收藏
2020-11-26

共1个答案

小编典典

您可以在JTextPane上设置javax.swing.text.Document。以下示例将使您了解我的意思:)

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来完成这项工作。然后将Document设置为您的JTextPane。

干杯

2020-11-26