在一个paintcomponent里面。它以g为参数,g可以是graphics或graphics2d。该类扩展了 jpanel。然后:
super.paintComponent(g);
this.setBackground( Color.BLACK );
如果 g 是 graphics 它可以工作,但如果它是 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 规范JComponent
JPanel
有一个方法摘要,其中列出了属于该类的所有方法。
有关在 Swing 中绘画的更多信息;