gpt4 book ai didi

java - 为什么 PaintComponent 不能接受 Graphics2D 对象?

转载 作者:行者123 更新时间:2023-12-02 00:25:37 25 4
gpt4 key购买 nike

public class MyDrawPanel extends JPanel {
public void paintComponent(Graphics g){

Graphics2D gd2 = (Graphics2D) g;
GradientPaint gradient = new GradientPaint(70,70,Color.blue,150,150,Color.red);


}
}

为什么这个有效但这个无效:

public class MyDrawPanel extends JPanel {
public void paintComponent(Graphics2D g){

GradientPaint gradient = new GradientPaint(70,70,Color.blue,150,150,Color.red);

g.setPaint(gradient);
g.fillOval(70,70,100,100);
}
}

第一个渲染,但第二个除了框架之外不渲染任何图形。我注意到paintComponent()需要一个Graphics对象,但是如果Graphics2D是Graphics对象的子类,为什么我不能调用Graphics的子类?

是否有一些我没有理解的概念?

最佳答案

它说你应该这样实现它,因为Graphics2D是Graphics,而Graphics不是Graphics2D。

如果您觉得选角令人不安,您可以随时创建自己的例如。 MyJPanel 扩展 JPanel,定义您自己的方法,并在将来对其进行子类化,覆盖您定义的方法。

public class MyJPanel extends JPanel {

@Override
protected void paintComponent(Graphics g) {
paintComponent((Graphics2D) g);
}

protected void paintComponent(Graphics2D g) {
}
}

关于java - 为什么 PaintComponent 不能接受 Graphics2D 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10135982/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com