如何在JEditorPane中设置标签大小?

时间:2009-04-16 19:28:40

标签: java swing jeditorpane

可以使用JTextArea轻松设置setTabSize(int)标签尺寸。

使用JEditorPane

有类似的方法吗?

现在,我的窗格中带有标签的文字如下所示:

if (stuff){
            more stuff;
}

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

if (stuff){
    more stuff;
}

3 个答案:

答案 0 :(得分:13)

由于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";

答案 1 :(得分:7)

如果有人使用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);

答案 2 :(得分:1)

我花了一些时间来弄明白这一点。 并决定在TabSet中使用TabStop,它们根据字体大小计算宽度。 必须在字体大小改变时重置(在JEditPane的paint()方法中)。

复杂的东西! :(