你如何用Java更新这个自定义绘画?

时间:2014-11-29 04:03:38

标签: java swing user-interface awt paint

我有一个基于GUI的游戏,它是实时的,并使用JPanel和JFrame。我目前有一个重写的paintComponent,它根据我的代码中的某些条件进行绘制。例如:

protected void paintComponent(Graphics gfx)
{
    super.paintComponent(gfx);
    gfx.setFont(new Font("default", Font.BOLD, 18));

    if (one)
    {
        //do something
    }

    else
    {
        // do something else
    }
}

这取决于条件一次。我已经实现了一个我想用于语句的鼠标监听器,这样如果有人点击某个部分它会显示其他内容。我想回去再次运行paintComponent,以便它绘制在旧的顶部之上。 paintComponent()已经循环了吗?如果没有,你怎么能在循环中运行该方法?

1 个答案:

答案 0 :(得分:3)

您可以通过致电repaint()重新开始。您可以通过创建一个计时器来重新绘制它,或者只在需要更新时调用它(如果您的代码足够简单可能更好),可以循环执行此操作。

编辑:关于何时使用计时器:

不需要计时器。我曾经在游戏中使用它,因为我是自定义绘制整个窗口,并且有几十个总是在变化的东西要绘制,并且每次调用render()都不会让我的CPU开心。但是,对于一些简单的事情,最好只在事情发生变化时才调用repaint(),因为如果没有任何改变,你就会浪费那么多时间重新绘制它。