2012-04-19 16 views
4

CircleListenerは、パネルクラスの内部クラスで、MouseListenerインターフェイスが含まれています。 MouseRelasedメソッドは、クリックされた領域が円で囲まれているかどうかをチェックし、そうであればそのシェイプを選択して選択し、選択した領域を削除します。Java GUI - MouseListenerとActionListenerは同じクラスにありますか?

ここでは、「timer」オブジェクトを使用してランダムなサイズの円をこのパネルに追加するためにActionListenerが必要です。 質問: "ActionListener"をCircleListenerに実装することは可能ですか、 "ActionListener"の別の内部クラスを作成する方が良いでしょうか?事前に

おかげ

private class CircleListener implements MouseListener 
{ 
    ShapesCanvas canvas; 
    ShapeContainer container; 
    Shape possibleShape; 

    private CircleListener(ShapesCanvas canv, ShapeContainer cont) 
    { 
     this.canvas = canv; 
     this.container = cont; 
    } 

    public void MouseRelased (MouseEvent e) 
    { 
     possibleShape = container.contains(e.getX(), e.getY()); 

     if(possibleShape != null) 
     { 
      ((Selectable)possibleShape).setSelected(true); 
      container.removeSelected(); 
     } 
     canvas.repaint(); //repaints the last situation 
    } 

答えて

10

それはちょうどあなたが代わりに2つのクラスを作成することができます

private class CircleListener implements MouseListener, ActionListener 

を宣言した後、次の2つの異なる実体を持っているので、それは、私が好むものを実際には、definetly可能ですはっきりと定義された目的で。各エンティティはただ1つの機能に責任があります。

どちらの方法も有効です。

+0

はまた、それだけで良いオブジェクト指向の練習でTimerイベントに応答するものであるということです。 :) –

1

構文上、両方のインタフェースを実装するクラスを定義できます。 2つのクラスを完全に異なる目的で使用する場合は、サークルの半径などの情報を共有する場合は2つのクラスを定義します。私はここで理解していないものを

ActionListenerは、GUIのイベントではなく、

関連する問題