JTextArea
可以使用 轻松设置A的选项卡大小setTabSize(int)
。
有没有类似的方法来做到这一点JEditorPane
?
现在,我的窗格中带有选项卡的文本如下所示:
if (stuff){
more stuff;
}
而且,我更喜欢更小的制表位:
if (stuff){
more stuff;
}
JTextArea
可以使用 轻松设置A的选项卡大小setTabSize(int)
。
有没有类似的方法来做到这一点JEditorPane
?
现在,我的窗格中带有选项卡的文本如下所示:
if (stuff){
more stuff;
}
而且,我更喜欢更小的制表位:
if (stuff){
more stuff;
}
由于 JEditorPane 旨在支持不同种类的内容类型,它不提供直接指定“选项卡大小”的方法,因为其含义应由内容模型定义。但是,当您使用作为 PlainDocument 或其后代之一的模型时,有一个“tabSizeAttribute”可以提供您正在寻找的内容。
例子:
JEditorPane pane = new JEditorPane(...);
...
Document doc = pane.getDocument();
if (doc instanceof PlainDocument) {
doc.putProperty(PlainDocument.tabSizeAttribute, 8);
}
...
来自 Javadoc:
/**
* Name of the attribute that specifies the tab
* size for tabs contained in the content. The
* type for the value is Integer.
*/
public static final String tabSizeAttribute = "tabSize";
如果有人使用 StyledDocument (另一个答案的链接已失效)
您创建一个 TabSet,它是一个 TabStops 数组。就我而言,我只关心第一个选项卡,我希望它距离左边 20px,所以这段代码对我有用:
StyleContext sc = StyleContext.getDefaultStyleContext();
TabSet tabs = new TabSet(new TabStop[] { new TabStop(20) });
AttributeSet paraSet = sc.addAttribute(SimpleAttributeSet.EMPTY, StyleConstants.TabSet, tabs);
pane.setParagraphAttributes(paraSet, false);
我花了一段时间才弄清楚这一点。并决定在根据字体大小计算宽度的 TabSet 中使用 TabStop。当字体大小发生变化时(在 JEditPane 的 paint() 方法中),必须重新设置。
复杂的东西!:(