为什么Java Graphics无法与自定义子类一起使用?

问题描述

我正在尝试使用Ellipse2D.Double类为圈子创建一个子类。

public class Circle extends Ellipse2D.Double{

double radius;

public Circle (double radius){
        radius = this.radius;
        height = radius*2;
        width = radius*2;
        x = 0;
        y = 0;
}

像这样填充JPanel无效:

JPanel p = new JPanel() {
        @Override
        public void paintComponent(Graphics g) {
            Graphics2D g2 = (Graphics2D) g;
        
        Circle circle1 = new Circle(100);

        g2.draw(circle1);

但这样做确实可行:

g2.draw(new Ellipse2D.Double(0,100,100));

这是为什么?我在构造函数中设置了Ellipse2D的所有字段,但没有收到任何错误消息。所以我不确定为什么它不起作用。

解决方法

您的构造函数不正确。

        radius = this.radius;

正在将参数变量radius设置为radius字段的初始值。应该是相反的方式。

        this.radius = radius;

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...