2009-04-16 5 views
10

La taille d'une tabulation de JTextArea peut facilement être définie à l'aide de setTabSize(int).Comment définir la taille de l'onglet dans un JEditorPane?

Existe-t-il une manière similaire de le faire avec un JEditorPane?

En ce moment, le texte avec des onglets dans mon volet ressemble:

if (stuff){ 
      more stuff; 
} 

Et, je préfère un taquet de tabulation beaucoup plus petite:

if (stuff){ 
    more stuff; 
} 
+0

http://java-sl.com/tip_default_tabstop_size.html vous pouvez vérifier ce – StanislavL

Répondre

13

Comme JEditorPane est conçu pour supporter différents types des types de contenu, il ne permet pas de spécifier directement une "taille de tabulation", car la signification de ce paramètre doit être définie par le modèle de contenu. Cependant, lorsque vous utilisez un modèle qui est un PlainDocument ou l'un de ses descendants, il existe un "tabSizeAttribute" qui fournit ce que vous recherchez.

Exemple:

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

De l'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

Merci de ne pas seulement « comment », mais « pourquoi » trop – jjnguy

+1

Pour Styled EditorKit il est également possible http: // java-sl.com/tip_default_tabstop_size.html – StanislavL

6

Au cas où quelqu'un se sert d'un StyledDocument (Le lien sur l'autre réponse est mort)

Vous créez un TabSet qui est un tableau de TabStops. Dans mon cas, je ne me souciais sur le 1er onglet, et je voulais 20px de la gauche, de sorte que ce code a fonctionné pour moi:

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

m'a pris un certain temps pour comprendre. Et a décidé d'utiliser TabStop dans un TabSet qui ont calculé la largeur en fonction de la taille de la police. Ceci doit être réinitialisé lorsque la taille de la police change (dans la méthode paint() de JEditPane).

Articles compliqués! :(

+3

Ceci n'est pas une réponse! – Vallentin

Questions connexes