2013-12-16 59 views
0

如何將Label s從左上方等佈置在畫布上? ,如果你能告訴我如何在循環中做到這一點。安排標籤

我試着使用GridData,但我不認爲我理解那麼多。

GridData gd = new GridData(SWT.LEFT); 
Label lbl = new Label(canvas, SWT.LEFT); 
lbl.setText("A: "); 
lbl.setBackground(display.getSystemColor(SWT.COLOR_WHITE)); 
lbl.setLayoutData(gd); 
Label lbl2 = new Label(c,SWT.TOP); 
lbl.setText("B: "); 
lbl.setBackground(display.getSystemColor(SWT.COLOR_WHITE)); 
lbl2.setLayoutData(gd); 
+0

結果應該是什麼樣子?如果你打算使用'GridLayout',你想要多少列? – Baz

+0

我希望它看起來像一列標籤 – user3061943

回答

2

如果你只是想一列,用RowLayoutSWT.VERTICAL

public static void main(String[] args) 
{ 
    Display display = new Display(); 
    Shell shell = new Shell(display); 
    shell.setLayout(new RowLayout(SWT.VERTICAL)); 
    shell.setText("StackOverflow"); 

    for(int i = 0; i < 10; i++) 
    { 
     new Label(shell, SWT.NONE).setText("Label " + i); 
    } 

    shell.pack(); 
    shell.open(); 

    while (!shell.isDisposed()) 
    { 
     if (!display.readAndDispatch()) 
     { 
      display.sleep(); 
     } 
    } 

    display.dispose(); 
} 

是這樣的:

enter image description here

+0

謝謝! 現在我明白了 – user3061943

+0

@ user3061943順便說一句:爲什麼你使用'Canvas'? – Baz

0

SWT.LEFT和SWT.TOP 首先,應該不是相同或? 第二 與陣列 只是環槽的陣列和用於每個值創建標籤 尺寸/位置正好(以%計)100/TOTAL * KEY (如果KEY從0開始,然後進到最高)

+0

我想我明白了 謝謝 – user3061943