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);

私が欲しいのは、誰かがドロップダウンオプションの1つを選択したときに、後で作成する関数が呼び出されることです。

私は次のようなことを試みました:

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

または:

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

または:

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

また、「タイプModifyListenerまたはSelectionListenerをインスタンス化できません」などのエラーが発生し続けます。これを修正するにはどうすればよいですか?

4

1 に答える 1

3

コードの問題は、最初の(括弧を早く閉じることです。

これ:

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 に答える