4

CircleListenerは私のパネルクラスの内部クラスであり、MouseListenerインターフェイスが含まれるようになりました。MouseRelasedメソッドは、クリックされた領域が円で囲まれているかどうかを確認し、囲まれている場合は、その形状を選択済みに設定し、選択済みの形状を削除します。

次に、ActionListenerを使用して、「タイマー」オブジェクトを使用してこのパネルにランダムなサイズの円を追加する必要があります。質問:CircleListenerに「ActionListener」を実装することは可能ですか、それとも「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
    }
4

2 に答える 2

11

それは間違いなく可能です、ただ宣言するだけです

private class CircleListener implements MouseListener, ActionListener

代わりに2つのクラスを作成できます。これは、明確に定義された目的を持つ2つの異なるエンティティがあるためです。各エンティティは、1つの機能のみを担当します。

しかし、どちらのアプローチも有効です。

于 2012-04-19T11:49:07.363 に答える
1

構文的には、両方のインターフェースを実装するクラスを定義できます。目的がまったく異なる場合は2つのクラスを定義し、円の半径などの情報を共有する場合はコードを1つにまとめます。

ここで私が理解していないActionListenerのは、イベントではなくGUIイベントに応答するTimerことです

于 2012-04-19T11:53:35.453 に答える