gpt4 book ai didi

java - Jr Java-er 希望将参数传递给 Paint

转载 作者:行者123 更新时间:2023-12-01 23:43:19 26 4
gpt4 key购买 nike

我目前可以通过添加扩展 JComponent 的组件(在其中修改 PaintComponent 方法)来在 Java 中绘制矩形、椭圆形和线条:

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 */
}
}

但是,这两种方法都不允许我向它们传递参数。在多帧动画 Sprite 的情况下,我可以想象有一些外部变量,它可以读取它来确定帧编号,然后根据该帧编号在内部仅绘制适当的“ Sprite ”内容,但我更希望能够直接将帧号传递给它。不幸的是,我不仅不知道它是从哪里调用的,我也不知道它需要作为输入的 Graphics g 在哪里。

可能有更好的方法来完成我想要的事情,直接与绘制例程通信,告诉它在我需要的时候只绘制我想要的东西,但我不知道如何实现这一点。

如果这种方法可行,该怎么做?如果最好使用现有的paint或paintComponent方法,我怎样才能最好地向它们传递附加信息?

<小时/>

显然我问的不清楚。我希望有一个组件或其他实体有自己的paintComponent或paint方法,在其内部,基于传递给它的frameNumber参数,或者显然更可能的是,它可以基于类属性,例如frameNumber访问时,该方法确定要绘制 Sprite 的哪一帧。

但重要的是,我希望能够在帧编号发生变化时重新调用paint或paintComponent来重绘 Sprite 。我最大的困惑在于不知道如何重新调用该方法,据我所知,只有在调整框架大小或以其他方式重新绘制框架时才会调用该方法。

那么,如何逐帧重绘组件/对象/实体?

最佳答案

首先,不要重写paint,使用paintComponent

其次,您需要定义某种模型来记录所有图形对象的状态。当调用 paintComponent 时,您需要渲染该状态。您不应尝试将参数传递给绘制方法,而应该拥有一个允许绘制方法访问模型(即 getModel)的方法,该模型在较早的时间传递给组件。

然后更新引擎将更新模型,组件将绘制该模型

举个例子... Use a timer when a key is pressed

关于java - Jr Java-er 希望将参数传递给 Paint,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17582734/

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