1

SWT シェルに 4 つのチェック ボックス ボタンを追加するコードがあります。選択リスナーを checkBox ボタンに追加しました。これは、SWT シェルの [OK]、[CANCEL]、および [CLOSE] ボタンをクリックして削除します。私のコードです

grpVersionTreeComponents.setLayoutData(componentsRenderer.createGridData(490, 220, 4));
            for(int versionCount = 0; versionCount < versionSplitters.length ; versionCount++ ){
                String splitter= versionSplitters[versionCount];
                Button cbVersionSplitter = new CheckBoxWrapper().getButton(grpVersionTreeComponents,splitter.toString() , "");
                cbVersionSplitter.setEnabled(true);
                versionSplitterCheckBoxList.add(cbVersionSplitter);
                versionSplitterCheckBoxList.get(versionCount).addSelectionListener(addSplitterCheckBoxListner(cbVersionSplitter));

            }

this my selection アダプター方式

public SelectionAdapter addSplitterCheckBoxListner(final Button button){
        return new SelectionAdapter() {
            public void widgetSelected(SelectionEvent e) {


                String[] defaultVersionSplitters =  PropertyClass.getPropertyLabel(QTLConstants.VERSIONING_ASSISTENT_PAGE_SPLLITER).split(QTLConstants.MULTIPLE_EXTENSIONS_SPLITER);
                //check if button.getText() is equal to "Custom Splitter" String
                if(button.getText().equalsIgnoreCase(defaultVersionSplitters[3])){
                    if(button.getSelection()){
                        customVersionSplitterText.setEnabled(true);
                    }else{
                        customVersionSplitterText.setEnabled(false);
                    }

                }


            }

        };
    }

と OK キャンセル ボタンはこのように追加されます

private void addOkCancelButtonOnVersionTreePopup(final Shell versionTreeComponentsShell){

        Button ok = componentsRenderer.createButtonWidget(versionTreeComponentsShell, SWT.PUSH,
                PropertyClass.getPropertyLabel(QTLConstants.OK_BUTTON));
        Button cancel = componentsRenderer.createButtonWidget(versionTreeComponentsShell, SWT.PUSH,
                PropertyClass.getPropertyLabel(QTLConstants.CANCEL_BUTTON));
        ok.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {

}
        });
}
cancel.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {          
                /*disposeSelectionListener(cbVersionSplitter);*/
                versionTreeComponentsShell.close();             
            }
        });

    }
}

どうすればこの選択リスナーを削除できますか

よろしく

4

1 に答える 1

0

次のことができます。

1)。クラスを拡張するクラスを作成しますSelectionAdapter

2)。コードで行ったようにメソッドをオーバーライドwidgetSelected()します。

3)。equals(Object other)メソッドを次のようにオーバーライドします。

@Override
public boolean equals(Object other) {
   if (other == null) {
      return false;
   }
   if (other instanceof MyOwnSelectionAdapter) {
      return true;
   }
}

MyOwnSelectionAdapterの独自の実装はどこにありますかSelectionAdapter

4)。これで、次のことができます:cancel.removeSelectionListener(new MyOwnSelectionAdapter());そして、そのセレクション リスナーを削除します。

于 2013-01-21T15:44:40.017 に答える