在paintcomponent里面。它以g为参数,并且g可以是graphics或graphics2d。该类扩展了jpanel。然后:
super.paintComponent(g);
this.setBackground( Color.BLACK );
如果g是图形,它可以工作,但是如果是graphics2d,则不能。两者都可以编译,但是graphics2d不会改变背景颜色。怎么会?
最佳答案
JPanel
(是JComponent
的子类)仅具有paintComponent(Graphics)
方法。它没有带有签名paintComponent(Graphics2D)
的方法。
可以通过以下方法覆盖paintComponent(Graphics)
方法:
public void paintComponent(Graphics g)
{
// Do things.
}
但是,使用如下所示的带有
paintComponent(Graphics2D)
签名的方法定义是合法的,但是它永远不会被调用,因为它不会覆盖JComponent
中定义的任何方法:public void paintComponent(Graphics2D g)
{
// Do things.
// However, this method will never be called, as it is not overriding any
// method of JComponent, but is a method of the class this is defined in.
}
Java API specifications for the
JComponent
class(是JPanel
的超类)具有方法摘要,该摘要列出了该类中的所有方法。有关在Swing中绘画的更多信息;
Lesson: Performing Custom Painting中的The Java Tutorials
Painting in AWT and Swing
关于java - 代码适用于Java图形,但不适用于graphics2d,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/576235/