9

JTextArea可以使用 轻松设置A的选项卡大小setTabSize(int)

有没有类似的方法来做到这一点JEditorPane

现在,我的窗格中带有选项卡的文本如下所示:

if (stuff){
            more stuff;
}

而且,我更喜欢更小的制表位:

if (stuff){
    more stuff;
}
4

3 回答 3

12

由于 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";
于 2009-04-16T19:48:24.077 回答
6

如果有人使用 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);
于 2012-04-03T17:57:31.667 回答
0

我花了一段时间才弄清楚这一点。并决定在根据字体大小计算宽度的 TabSet 中使用 TabStop。当字体大小发生变化时(在 JEditPane 的 paint() 方法中),必须重新设置。

复杂的东西!:(

于 2012-10-10T21:27:48.313 回答