2013-12-16 35 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