设置在Swing的JTextPane的标签政策
题
我想我的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你的子类()。这可能是更多的麻烦比捕虽然关键事件。
不隶属于 StackOverflow