我目前能够通过添加一个扩展 JComponent 的组件在 Java 中绘制矩形、椭圆和线条,在其中我修改了一个 paintComponent 方法:
public class myComponent extends JComponent
{
public void paintComponent(Graphics g)
{
/* do simple draw stuff */
}
}
我也知道如何让我的类扩展 JApplet 或 JPanel,然后使用绘画方法进行绘制:
public class myClass extends JPanel
{
public void paint(Graphics g)
{
/* do simple draw stuff */
}
}
但是,这两种方法都不允许我向它们传递参数。在多帧动画精灵的情况下,我可以想象有一些外部变量,它读取以确定帧号,然后在内部仅根据该帧号绘制适当的“精灵”内容,但我希望能够直接将帧号传递给它。不幸的是,我不仅不知道它是从哪里调用的,我也不知道它需要作为输入的 Graphics g 在哪里。
可能有更好的方法来完成我想要的,直接与绘图例程通信,告诉它在我想要的时候只绘制我想要的,但我不知道如何实现这一点。
如果这样的方法是可能的,那将如何做?如果使用现有的paint 或paintComponent 方法更好,我怎样才能最好地将附加信息传递给它们?
显然我并不清楚我问了什么。我希望有一个组件或其他实体,它有自己的paintComponent 或paint 方法,在其内部,基于传递给它的frameNumber 参数,或者显然更可能是一个类属性,例如它可以的frameNumber访问时,该方法确定要绘制精灵的哪一帧。
但重要的是,我希望能够在帧号更改时重新调用paint 或paintComponent 来重绘精灵。我最大的困惑在于不知道如何重新调用该方法,据我所知,只有在调整框架大小或以其他方式重绘时才会调用该方法。