2014-02-14 67 views
2

我正在開發Java SWT的第一步,所以請隨身攜帶。
我試圖創建一個簡單的窗口,使用下面的代碼按鈕:Java SWT - 向shell添加按鈕

public static void main(String[] args) 
{  
    Display display=new Display(); 
    Shell shell=new Shell(); 

    shell.open(); 
    shell.setText("Hi there!"); 
    shell.setSize(500,500); 

    Button pushButton = new Button(shell, SWT.PUSH); 
    pushButton.setText("Im a Push Button"); 
    //pushButton.pack(); 

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

    shell.dispose(); 
} 

當註釋掉「pushButton.pack()」行,該按鈕將不會出現在窗口上。 真的有必要爲每個我想添加的按鈕調用pack()方法嗎?
如果我有10個按鈕怎麼辦?

for (int i=0; i<10; i++) { 
    new Button(shell, SWT.RADIO).setText("option "+(i+1)); 
} 

它將如何工作?

另外, 有沒有一個很好的SWT教程在線初學者?
你能推薦一本能引導我完成SWT的書嗎?

非常感謝先進!

回答

2

你的程序應該是這樣的:

public static void main(String[] args) 
{  
    Display display=new Display(); 
    Shell shell=new Shell(); 

    // Set a layout 
    shell.setLayout(new FillLayout()); 
    shell.setText("Hi there!"); 

    Button pushButton = new Button(shell, SWT.PUSH); 
    pushButton.setText("Im a Push Button"); 

    // Move the shell stuff to the end 
    shell.pack(); 
    shell.open(); 
    shell.setSize(500,500); 

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

這樣的話,你只能在Shell致電pack()一次。


這些是絕對必備讀取SWT初學者:

+0

謝謝巴茲。 但是,我現在有一個500x500大小的按鈕... 順便說一句,當我調用shell.open()方法時,它有關係嗎? –

+0

@ so.very.tired該按鈕就是這個尺寸,因爲有'FillLayout'和'setSize(500,500)'調用。你可以在你想要的任何地方調用'shell.open()',但是在添加完所有初始控件之後,應該調用'shell.pack()'和'shell.setSize()'。 – Baz