java - 在 Swing 的 JTextPane 中设置选项卡策略

标签 java swing jtextpane

我希望 JTextPane 在按下 Tab 时插入空格。目前它插入制表符(ASCII 9)。

是否有办法自定义 JTextPane 的选项卡策略(除了捕获“tab键”事件并自己插入空格似乎是一个)?

最佳答案

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

干杯 凯

关于java - 在 Swing 的 JTextPane 中设置选项卡策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/363784/

相关文章:

java - spring-boot 升级后控制台中的@ExceptionHandler 空指针

java - LinearLayout原因 "requestLayout() improperly called by android.widget.LinearLayout"

java - 从 JTree 添加和删除节点

java - 为什么我的按钮在我的 JFrame 中不可见?

java - 将文本从另一个类添加到 JTextPane

java - 如何阻止 Proguard 删除返回类型?

java - Eclipse 报告 "Failed to load JNI shared library"

Java Trident 库和 Thread.sleep()

java - Swing GUI 在 JTextPane 中附加彩色文本

java - 如何使 JTextPane 换行