2010-08-31 106 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);