我想我的JTextPane插入时,我按Tab键空格。目前,它插入制表符(ASCII 9)。

反正是有定制的JTextPane的标签政策(而不是捕捉“选项卡键”事件并插入自己似乎是一个空格)?

有帮助吗?

解决方案

您可以设置您的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。

干杯 启

其他提示

据我所知,你必须抓住关键事件,如你所说。根据使用情况,还可以摆脱那个时候等到输入被提交,制表符变成了空格。

您可以尝试子类DefaultStyledDocument和压倒一切的插入替换任何标签用空格插入的元素。然后,在用的JTextPane安装setStyledDocument你的子类()。这可能是更多的麻烦比捕虽然关键事件。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top