LookupListenerインタフェースを実装してresultChangedでイベント処理
public void resultChanged(LookupEvent lookupEvent) { Lookup.Result res = (Lookup.Result)lookupEvent.getSource(); for(Object o : res.allInstances()){ //選択の処理 } }
TopComponentのaddNotifyをオーバーライドしてリスナーの登録
Lookup.Result selectedNode; public void addNotify() { super.addNotify(); //MyNodeは、監視対象のノードクラス selectedNode = Utilities.actionsGlobalContext().lookup( new Lookup.Template(MyNode.class)); selectedNode.addLookupListener(this); }
TopComponentのremoveNotifyをオーバーライドしてリスナーの解除
public void removeNotify() { super.removeNotify(); selectedNode.removeLookupListener(this); }