ComponentListenerは、Component自体が呼び出すのではなく、そのComponentがaddされているPanelクラスによって呼び出される。
Panel p = new Panel();
p.setComponentListener(listener);
Panelを継承したクラスでComponentListenerも実装すれば、Componentイベントを自身で管理できる。
class HogePanel extends Panel implements ComponentListener{
public HogePanel(){
this.setComponentListener(this);
}
}
ComponentListenerを実装したクラスはcomponentActionをオーバーライドしなければならない。componentAction(Component source, int type, int param)
ただし、いくつも同じコンポーネントクラスのインスタンスを作成している場合は、ComponentListener側ではどのクラスインスタンスのイベントなのか分からんので、ifとequals()で手当たり次第に探したりする。
または、Componentを継承したクラス自体を独自に作成しておいて、区別し易くなるような属性を付加しておいたりするといいかもしれない。
0 件のコメント:
コメントを投稿