2012-12-25 66 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