-2

これを、オブジェクトを描画する場所やオブジェクトをスケーリングする場所を指定するために使用できる 2 つの引数のコンストラクターにするにはどうすればよいでしょうか。これは Jframe グラフィック プロジェクトに使用されています。それが助けになるなら、私もJframeを投稿できます。

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Line2D;
import javax.swing.JComponent;
import java.awt.GradientPaint;

/*
   component that draws the concert speakers
*/


public class ConcertSpeaker extends JComponent
{  
    public void paintComponent(Graphics g)
    {  

        super.paintComponent(g);

        // Recover Graphics2D 
        Graphics2D g2 = (Graphics2D) g;

         // Speaker base
        g2.setColor(Color.BLACK);
        Rectangle base = new Rectangle (300, 400, 50, 100);
        g2.fill(base);

        // Speakers circles gray top
        g2.setColor(Color.DARK_GRAY);
        Ellipse2D.Double speakerTop = new Ellipse2D.Double(310, 410, 30, 30); 
        g2.fill(speakerTop); 

        //speakers circles black top
        g2.setColor(Color.BLACK);
        Ellipse2D.Double speakerTop1 = new Ellipse2D.Double(315, 415, 20, 20); 
        g2.fill(speakerTop1); 

        // Speakers circles gray bottom
        g2.setColor(Color.DARK_GRAY);
        Ellipse2D.Double speakerBottom = new Ellipse2D.Double(310, 450, 30, 30); 
        g2.fill(speakerBottom); 

        //speakers circles black bottom
        g2.setColor(Color.BLACK);
        Ellipse2D.Double speakerBottom1 = new Ellipse2D.Double(315, 455, 20, 20); 
        g2.fill(speakerBottom1); 


    }
}
4

1 に答える 1

0

大きなコンポーネントを持つことが最善の方法であるかどうかはわかりませんが、あなたが求めていることを私が理解したことを達成する方法は次のとおりです(クラスの本体のみ):

private int x, y;
private float scale;

public PosSCale(int x, int y, float scale) {
    this.x = x;
    this.y = y;
    this.scale = scale;
}

public void paintComponent(Graphics g)
{  

    super.paintComponent(g);

    // Recover Graphics2D 
    Graphics2D g2 = (Graphics2D) g;
    g2.translate(x, y);
    g2.scale(scale, scale);

     // Speaker base
    g2.setColor(Color.BLACK);
    Rectangle base = new Rectangle (0, 0, 50, 100);
    g2.fill(base);

    // Speakers circles gray top
    g2.setColor(Color.DARK_GRAY);
    Ellipse2D.Double speakerTop = new Ellipse2D.Double(10, 10, 30, 30); 
    g2.fill(speakerTop); 

    //speakers circles black top
    g2.setColor(Color.BLACK);
    Ellipse2D.Double speakerTop1 = new Ellipse2D.Double(15, 15, 20, 20); 
    g2.fill(speakerTop1); 

    // Speakers circles gray bottom
    g2.setColor(Color.DARK_GRAY);
    Ellipse2D.Double speakerBottom = new Ellipse2D.Double(10, 50, 30, 30); 
    g2.fill(speakerBottom); 

    //speakers circles black bottom
    g2.setColor(Color.BLACK);
    Ellipse2D.Double speakerBottom1 = new Ellipse2D.Double(15, 55, 20, 20); 
    g2.fill(speakerBottom1); 


}
于 2013-11-03T17:47:24.623 に答える