Как вы устанавливаете размер вкладки в JEditorPane? - PullRequest
10 голосов
/ 16 апреля 2009
Размер вкладки

A JTextArea можно легко установить с помощью setTabSize(int).

Есть ли подобный способ сделать это с JEditorPane?

Прямо сейчас текст с вкладками на моей панели выглядит так:

if (stuff){
            more stuff;
}

И я бы предпочел намного меньшую точку табуляции:

if (stuff){
    more stuff;
}

Ответы [ 3 ]

13 голосов
/ 16 апреля 2009

Поскольку 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";
7 голосов
/ 03 апреля 2012

В случае, если кто-либо использует StyledDocument (ссылка на другой ответ умерла)

Вы создаете TabSet, который является массивом TabStops. В моем случае я заботился только о 1-й вкладке и хотел, чтобы она была 20 пикселей слева, поэтому этот код работал для меня:

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);
1 голос
/ 11 октября 2012

Мне понадобилось время, чтобы понять это. И решил использовать TabStop в TabSet, который рассчитал ширину на основе размера шрифта. Это необходимо сбросить при изменении размера шрифта (в методе paint () JEditPane).

Сложные вещи! (

...