"Graphics2D g2d = (Graphics2D) g;" 是什么意思,下面代码段中这一行的意义是什么?
What does "Graphics2D g2d = (Graphics2D) g;" mean and what is the significance of this line in the following code segment?
public void paint(Graphics g)
{
Graphics2D g2d = (Graphics2D) g;
g2d.setColor(Color.RED);
g2d.fillOval(0, 0, 30, 30);
g2d.drawOval(0, 50, 30, 30);
g2d.fillRect(50, 0, 30, 30);
g2d.drawRect(50, 50, 30, 30);
g2d.draw(new Ellipse2D.Double(0, 100, 30, 30));
}
嗯,我是 JPanel
class 的新手,我有点困惑。 g
是 Graphics
class 的对象。那么,(Graphics2D) g
是什么意思,因为在这一行中 g
似乎是一个方法而不是一个对象?此外,谁能告诉我为什么 Graphics2D
class 不能实例化?
g
是变量,不是方法。它在方法声明中声明,因为它是方法的参数(即,无论何时调用函数都需要传递它)。
(Graphics2D)
转换允许您将 g
视为 Graphics2D
对象。 See here 获取更多关于转换的信息。
您不能启动 Graphics2D
,因为它是一个 abstract class,这意味着它有一些特定于实现的方法。
public void paint(Graphics g)
{
Graphics2D g2d = (Graphics2D) g;
g2d.setColor(Color.RED);
g2d.fillOval(0, 0, 30, 30);
g2d.drawOval(0, 50, 30, 30);
g2d.fillRect(50, 0, 30, 30);
g2d.drawRect(50, 50, 30, 30);
g2d.draw(new Ellipse2D.Double(0, 100, 30, 30));
}
嗯,我是 JPanel
class 的新手,我有点困惑。 g
是 Graphics
class 的对象。那么,(Graphics2D) g
是什么意思,因为在这一行中 g
似乎是一个方法而不是一个对象?此外,谁能告诉我为什么 Graphics2D
class 不能实例化?
g
是变量,不是方法。它在方法声明中声明,因为它是方法的参数(即,无论何时调用函数都需要传递它)。
(Graphics2D)
转换允许您将 g
视为 Graphics2D
对象。 See here 获取更多关于转换的信息。
您不能启动 Graphics2D
,因为它是一个 abstract class,这意味着它有一些特定于实现的方法。