2017-10-09 16 views
0

私はx、y、幅、高さで円を構成し、次にJpanelを使用して描画するコンストラクタを持つプロジェクトを作成しようとしています。 私は自分自身を試したり、まともな資源を見つけることが運がなかった...JPanelの円を作成するためのコンストラクタを作成しますか?

誰かが私を助けることができますか? JPanelのよりも良く選択肢があるかどうおかげで.. は、私はこの

public Circle(int x , int y, int w, int h) { 
    g.drawOval(x,y,w,h); 
} 

ような何か藤堂しようとしている。また、私は思ったんだけど? 2つの円を生成して移動し、交差したときにそれらを検出して交差領域をマークするアプリケーションを構築しようとしています。

+0

あなたの場合、「g」は何ですか?あなたはすでにいくつかのコード/知識を見つけたようですが、それを徹底的に読んでみませんか?その 'g.drawOval(x、y、w、h);'はコンポーネントの(パネルかもしれません) 'paint(Graphics g)'メソッドに属します。 – Thomas

+0

@トーマス 'paint 'の代わりに' paintComponent(Graphics g) 'メソッドを意味すると思います... – Frakcool

+0

@Frakcoolあなたは両方をオーバーライドできますが、' paintComponent(...) 'がおそらく良いでしょう。 :) – Thomas

答えて

2

Graphicsクラスを使用して描画しようとしているようです。あなたはそれを学ぶために得れば

public class Circle { 
public int x,y,w,h; 
public Circle(int xx,yy,ww,hh) { 
    x = xx; 
    y = yy; 
    w = ww; 
    h = hh; 
} 
public int getX() { 
    return x; 
} 
public int getY() { 
    return y; 
} 
public int getW() { 
    return w; 
} 
public int getH() { 
    return h; 
} 
} 
class MainClass { 
public circle = new Circle(50,50,50,50); 
@Override 
public void paintComponent(Graphics g) { 
    g.drawOval(circle.getX(),circle.getY(),circle.getW(),circle.getH()); 
} 
0

コンストラクタは非常に簡単です:

あなたはこのような何かをしたいと思います。クラスのコンストラクタには、クラスと同じ名前を付けてください。通常は、コンストラクターの入力を割り当てるためのプライベート変数を作成する必要があります。この場合、int x、int y、int w、およびint hをコンストラクタに代入するためにprivate int x、y、w、およびhを作成しました。

className objectName = new className(100, 200, 300, 400); 

:描画するとき、私たちはメインクラスで

public class className{ 
    //Creating object properties 
    private int x, y, w, h; 

    //Class Constructor 
    public className(int x, int y, int w, int h){ 
     this.x = x; 
     this.y = y; 
     this.w = w; 
     this.h = h; 
    } 

    //For drawing, you want to take in a Graphics2D Object (g2) 
    public void draw(Graphics2D g2){ 
     g2.drawOval(x, y, w, h); 
    } 
} 

か、どこにあなたのPaintComponentは、次のように入力し、あなたのコンストラクタを使用すること、である私たちの希望形状を描画するGraphics2Dオブジェクトに取り、ポイントなどこのコードは、xが100、yが200、w、300、およびhが400のコンストラクタ "className"から "objectName"という名前の新しいオブジェクトを作成します。描画関数を呼び出すには、単に

objectName.draw(g2); //Where g2 is some Graphics2D object 
と入力します。
関連する問題