可以使用JTextArea
轻松设置setTabSize(int)
标签尺寸。
使用JEditorPane
吗
现在,我的窗格中带有标签的文字如下所示:
if (stuff){
more stuff;
}
而且,我更喜欢一个更小的制表位:
if (stuff){
more stuff;
}
答案 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()方法中)。
复杂的东西! :(