2012-12-25 61 views
0

所以我有一個下拉菜單下方內置:添加監聽器下拉菜單

new Label(shell, SWT.NONE).setText("Bet Type:"); 
betType = new Combo(shell, SWT.SINGLE | SWT.BORDER); 
betType.setItems(new String[] {" ", "NFL", "NBA", "CFB"}); 
betType.setLayoutData(gridData); 

我要的是,當有人選擇的下拉列表中選擇一個,我將在後面寫一個函數會調用。

我試着做這樣的事情:

betType.addSelectionListener(new SelectionAdapter()) { ... } 

或者:

betType.addSelectionListener(new SelectionListener()) { ... } 

或者:

betType.addModifyListener(new ModifyListener()) { ... } 

而且我不斷收到錯誤說「無法實例化類型ModifyListener或SelectionListener「等。如何解決這個問題呢?

回答

3

您的代碼的問題是,您太早關閉第一個( -bracket。

此:

betType.addSelectionListener(new SelectionListener()) { ... } 

應該是:

betType.addSelectionListener(new SelectionListener() { ... }); 

下面的代碼不正是你想要什麼:

public static void main(String[] args) 
{ 
    Display d = new Display(); 
    final Shell shell = new Shell(d); 
    shell.setLayout(new GridLayout(1, false)); 

    new Label(shell, SWT.NONE).setText("Bet type:"); 

    final Combo betType = new Combo(shell, SWT.SINGLE | SWT.BORDER); 
    betType.setItems(new String[] {" ", "NFL", "NBA", "CFB"}); 

    betType.addListener(SWT.Selection, new Listener() 
    { 
     @Override 
     public void handleEvent(Event arg0) 
     { 
      System.out.println(betType.getText()); 
     } 
    }); 


    shell.pack(); 
    shell.open(); 
    while (!shell.isDisposed()) 
     while (!d.readAndDispatch()) 
      d.sleep(); 
} 

另外,該作品,以及:

betType.addSelectionListener(new SelectionListener() 
{ 
    @Override 
    public void widgetSelected(SelectionEvent arg0) 
    { 
     System.out.println(betType.getText()); 
    } 

    @Override 
    public void widgetDefaultSelected(SelectionEvent arg0) 
    { 
    } 
}); 
+0

是的,我剛剛在網上找到正確的符號,謝謝澄清! – Hoser