Java 用于指定对象绘制位置的双参数构造函数?

Java 用于指定对象绘制位置的双参数构造函数?,java,constructor,Java,Constructor,如何将其转换成一个双参数构造函数,用于指定在何处绘制对象和/或缩放对象。这正用于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.

如何将其转换成一个双参数构造函数,用于指定在何处绘制对象和/或缩放对象。这正用于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); 


    }
}

我不确定拥有一个大的组件是否是最好的做法,但以下是你如何实现我理解的你所要求的(仅仅是课堂的主体):


你认为这是怎么做到的?有什么想法吗?有没有想过构造函数的两个参数是什么?有没有尝试过制作一个?代码中没有缩放。
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); 


}