2010-08-31 5 views
2

Lorsque j'attribue du texte à mon Labels, ils s'enroulent très serré, coupant parfois les bords inférieurs de «p», «y» et autres. Je voudrais avoir un peu de remplissage entre le texte et la bordure. J'utilise un TableWrapLayout pour le parent Composite et TableWrapData pour le LabelsComment régler le remplissage des étiquettes SWT?

TableWrapLayout layout = new TableWrapLayout(); 
    layout.numColumns = 2; 
    layout.bottomMargin = 10; 
    layout.topMargin = 10; 
    client.setLayout(layout); 

    Label label= toolkit.createLabel(client, "", SWT.NONE); 

Nous utilisons le FormToolkit pour la conception cohérente, à mon humble avis cela n'a aucune influence sur la frontière peinture

+0

partie d'envoi de votre code pourrait être plus utile. Est-ce que TableWrapLayout ne fonctionne pas? [Bottom/top] Marge ou verticalEspace de travail? – Mohsen

+0

@Mohsen: ajouté du code source pour plus de clarté. xxxMargin et xxSpacing fonctionnent tous les deux mais font des différences: la marge génère une marge autour de tous les contrôles du composite, et l'espacement génère un espacement entre les contrôles individuels. Ce dont j'ai besoin est une marge/padding à l'intérieur de l'étiquette - un peu d'espace autour du texte – kostja

Répondre

2

mise en page (comme GridLayout) et LayoutData (par exemple, GridData) Les objets dans SWT peuvent uniquement contrôler l'espacement en dehors d'un contrôle (ils ne peuvent donc définir que des marges, pas de remplissage). Afin de changer le côté de contrôle lui-même, vous ne pouvez utiliser que setSize() et setBound().

+1

donc ça veut dire sth comme 'Point p = label.getSize(); p.x + = 4; p.y + = 4; label.setSize (p); ' Semble kludgy mais fonctionne réellement, comme un bon kludge devrait :) – kostja

+0

Oui, quelque chose comme ce que vous écrivez. – Mohsen

1

Quoting my answer to a similar question:

J'ai aussi lutté avec cette question. Label ne prend pas en charge le remplissage. J'ai fini par utiliser StyledText à la place.

final StyledText text = new StyledText(parent, SWT.WRAP); 
    final int padding = 5; 

    text.setLeftMargin(padding); 
    text.setRightMargin(padding); 
    text.setTopMargin(padding); 
    text.setBottomMargin(padding); 

    text.setWordWrap(true); 
    text.setCaret(null); 

Cela a fait l'affaire pour moi.

2

(réponse plusieurs années plus tard, mais toujours une réponse ...)

CLabel cl = new CLabel(shell, SWT.CENTER); 
int padding = 5; 
cl.setMargins(padding, padding, padding, padding); 
Questions connexes