Java 用于指定对象绘制位置的双参数构造函数?
如何将其转换成一个双参数构造函数,用于指定在何处绘制对象和/或缩放对象。这正用于Jframe图形项目。如果有帮助的话,我也可以发布JframeJava 用于指定对象绘制位置的双参数构造函数?,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.
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);
}