2009-04-16 17 views
10

A JTextArea El tamaño de la pestaña se puede configurar fácilmente usando setTabSize(int).¿Cómo se establece el tamaño de la pestaña en un JEditorPane?

¿Hay alguna manera similar de hacerlo con un JEditorPane?

En este momento, el texto con pestañas en mi panel se parece a:

if (stuff){ 
      more stuff; 
} 

Y, preferiría una mucho más pequeña tabulación:

if (stuff){ 
    more stuff; 
} 
+0

http://java-sl.com/tip_default_tabstop_size.html Puede verificar esto – StanislavL

Respuesta

13

Como JEditorPane está diseñado para soportar diferentes tipos de tipos de contenido, no proporciona una forma de especificar un "tamaño de tabulación" directamente, porque el significado de eso debe definirse por el modelo de contenido. Sin embargo, cuando utiliza un modelo que es un PlainDocument o uno de sus descendientes, hay un "tabSizeAttribute" que proporciona lo que está buscando.

Ejemplo:

JEditorPane pane = new JEditorPane(...); 
... 
Document doc = pane.getDocument(); 
if (doc instanceof PlainDocument) { 
    doc.putProperty(PlainDocument.tabSizeAttribute, 8); 
} 
... 

Desde el 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"; 
+0

Gracias no solo por un "cómo", sino también un "por qué" – jjnguy

+1

Para el Editor de estiloKit también es posible http: // java-sl.com/tip_default_tabstop_size.html – StanislavL

6

En caso de que alguien está usando un StyledDocument (El enlace en la otra respuesta muerto)

se crea un TabSet que es una matriz de TabStops. En mi caso sólo se preocupaba por la primera pestaña, y quería que 20 píxeles desde la izquierda, por lo que este código trabajado para mí:

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

Me tomó un tiempo para resolver esto. Y decidí usar TabStop en un TabSet que tiene un ancho calculado en función del tamaño de la fuente. Esto debe restablecerse cada vez que cambie el tamaño de la fuente (en el método paint() del JEditPane).

¡Cosas complicadas! :(

+3

¡Esto no es una respuesta! – Vallentin

Cuestiones relacionadas