2010-08-31 119 views
2

当我将文本分配到我的Labels时,它们环绕它非常紧密,有时会切断'p','y'等下边缘。我想在文本和边框之间填充一些内容。我使用的是TableWrapLayout父Composite和TableWrapData为Labels如何设置SWT标签填充?

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

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

我们正在使用一贯的设计了FormToolkit,恕我直言,这对边界没有影响绘画

+0

发送代码的一部分可能会更有帮助。 不是TableWrapLayout。[bottom/top]保证金还是verticalSpacing工作? – Mohsen 2010-09-01 11:48:15

+0

@Mohsen:为清晰起见添加了一些源代码。 xxxMargin和xxSpacing都可以工作,但做的不同 - margin会在Composite的所有Controls上产生一个边距,而间距会在各个Controls之间产生间距。我需要的是边缘/填充内的标签 - 文字 – kostja 2010-09-03 07:37:08

回答

2

布局(如网格布局)和LayoutData (例如GridData)中的对象只能控制控件之外的空间(所以它们只能设置边距而不是填充)。为了更改控制端本身,您只能使用setSize()setBound()

+1

周围的一些空间,所以它意味着像'Point p = label.getSize(); p.x + = 4; p.y + = 4; label.setSize(P);”似乎kludgy,但实际上工作,作为一个好kludge应该:) – kostja 2010-09-03 13:34:01

+0

是的,就像你写的东西。 – Mohsen 2010-09-04 15:05:05

1

Quoting my answer to a similar question:

我也纠结这个问题。 Label不支持填充。我改用StyledText代替。

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); 

这对我来说伎俩。

2

(后来答案多年,但仍然是一个答案......)

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