2013-04-23 72 views
0

我有一个扩展JPanel的类,它包含一个绘制(图形页面)方法来绘制自己..如果我正在构建一个测试驱动程序并希望将其显示在框架上,应该使用什么..我的paint(),的paintComponent()的getGraphics()等之间的混淆..绘制一个扩展JPanel的类

的Class

class Car extends JPanel { 

    void draw (Graphics page) { 
     ....draw polygons... 
    } 

* 编辑 *

的目标是动画汽车移动acr oss的屏幕,我改变了绘制方法'paintComponent()',它出现了!但它需要移动并用计时器重新绘制它。所以我想一遍又一遍地画它是draw()不是paintComponent()的原因。 ?

+1

阅读[Swing绘画教程](http://docs.oracle.com/javase/tutorial/uiswing/painting/index.html) - 它都在那里。你也可以搜索这个网站的例子,因为它充满了他们,有些是我写的。如果你仍然陷入困境,请回到一个特定的可回答的问题。 – 2013-04-23 02:42:58

+1

从[执行自定义图形](http://docs.oracle.com/javase/tutorial/uiswing/painting/)开始,然后查看[2D图形](http://docs.oracle.com/javase/tutorial/2d /),因为您显然不会感到困惑,请查看[AWT和Swing绘图](http://www.oracle.com/technetwork/java/painting-140037.html) – MadProgrammer 2013-04-23 02:45:37

+0

您应该重写'paintComponent',但是你不应该手动调用它! – MadProgrammer 2013-04-23 02:46:07

回答

2
  • paint()

    AWT容器(使用Swing)&摇摆顶层容器,如JFrame & JApplet(不要在顶层容器不画 - 添加JPanelJComponent)。所以基本上,不要在这个年龄改变方法。

  • paintComponent()

    绝大多数Swing组件。

  • getGraphics()

    BufferedImage(可能被在JLabel显示)。这将提供一个Graphics实例,但我更喜欢使用createGraphics()作为Graphics2D实例(渲染提示非常好)。