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”等。如何解决这个问题?

4

1 回答 1

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)
    {
    }
});
于 2012-12-25T23:11:17.327 回答