2016-12-15 7 views
0

私はJavaで小さな2dゲームを開発しようとしています。私のコード内のすべてのオブジェクトは、交差点や移動などについてのジオメトリコードの書き換えを避けるため、Rectangleを拡張します。次の問題はすべてのオブジェクトを描画することです。現時点では、背景をクリアしてすべてのオブジェクトを再描画するRendererクラスを設計しました。反対に、パネルに追加されたJavaコンポーネント(コンポーネントが追加されると、そのコンポーネントの位置が変更されるとコンポーネントがそれ自身で更新される)に対してこれが自動的に実行されることがわかりました。 私の次の考えは、Componentでオブジェクトクラスを拡張することでしたが、私はすでにRectangleで拡張していたので、できません。 これはどのようにして動作させるのですか?Javaカスタムコンポーネント

私は十分に自分自身を明らかにした願っています:)

答えて

0

あなたは委任パターンでこれを達成することができます: IRectangleは、ウィッヒであなたのRectangleクラスが持っているすべてのメソッドを記述するインタフェースを使用してください。そのような場合、RectangleとComponentクラスはIRectangleを実装する必要があります。

Rectangleクラスでは、コンポーネントクラス内で、Rectangleのインスタンスを作成するか、コンストラクタに渡すことができます。また、インタフェースのbeacauseを書く必要があるすべてのメソッドで、インスタンスをRectangleから外します。

Exemple:私の下手な英語スキルの

public interface IRectangle{ 
    public int getWidth(); 
    ... 
} 
public class Rectangle implements IRectangle{ 
    ... 
    public int getWidth(){ 
     return this.width; 
    } 
} 
public class CustomComponent extends Component implements IRectangle{ 
    private Rectangle rect; 
    public CustomComponent(Rectangle rect){ 
     this.rect = rect; 
    } 
    ... 
    public int getWidth(){ 
     return this.rect.getWidth(); 
    } 
} 

申し訳ありませんが、私はあなたが私が「^^意味を理解することを願って

関連する問題