Eclipse SWT Widget:组合两个监听器

Eclipse SWT Widget : Combining two Listeners

我目前正在更新向导页面,我希望在选择 radioButton 后禁用 textField

例如:if (radioButton[1].getSelection)
"then let's say textField[2].setEnabled(false)"

这里的问题是,如何将radioButton[i]textField[i]的两个监听器连接在一起?谢谢。

 case composed:
            container.setLayout(new RowLayout());
            Button[] radioButton= new Button[answers.size()];
            for (int i = 0; i < answers.size(); i++) {
                String ans = answers.get(i).getValue();
                radioButton[i]=new Button(container, SWT.RADIO);
                radioButton[i].setText(ans);
                radioButton[i].addSelectionListener(new SelectionAdapter(){

                    @Override
                    public void widgetSelected(SelectionEvent arg0) {
                        // TODO Auto-generated method stub

                    }});
            }
            Text[] textField=new Text[answers.size()];
            for (int i = 0; i < answers.size(); i++) {
                textField[i]=new Text(container, SWT.SINGLE | SWT.BORDER);
                textField[i].addModifyListener(new ModifyListener(){

                    @Override
                    public void modifyText(ModifyEvent arg0) {
                        // TODO Auto-generated method stub

                    }

                });
            }

在添加侦听器之前创建单选按钮和文本字段,以便您可以同时引用它们。

        Button[] radioButton = new Button[answers.size()];
        for (int i = 0; i < answers.size(); i++) {
            String ans = answers.get(i).getValue();
            radioButton[i] = new Button(container, SWT.RADIO);
            radioButton[i].setText(ans);
        }

        Text[] textField = new Text[answers.size()];
        for (int i = 0; i < answers.size(); i++) {
            textField[i] = new Text(container, SWT.SINGLE | SWT.BORDER);

            radioButton[i].addSelectionListener(new SelectionAdapter(){
                @Override
                public void widgetSelected(SelectionEvent arg0) {
                  textField[i].setEnabled(radioButton[i].getSelection());
                }});

            textField[i].addModifyListener(new ModifyListener(){
                @Override
                public void modifyText(ModifyEvent arg0) {
                  // your stuff
                }});
        }

您也可以将两个侦听器设为同一个侦听器对象(但老实说,为什么要麻烦 - 最好是具有单一用途的较小侦听器):

private static class MyListener extends SelectionAdapter implements ModifyListener {
     public void widgetSelected(SelectionEvent arg) { ... }
     public void modifyText(ModifyEvent arg) { ... }
}