当前位置: 首页 > 知识库问答 >
问题:

在调用paintComponent方法之后,如何在JPanel中绘制内容

何聪
2023-03-14

我对用Java制作GUI是新手。据我所知,有一个名为Graphics的类负责在JPanel中绘制形状。当我的应用程序启动时,我调用paintComponent方法,该方法绘制我正在编程的游戏的棋盘,paintComponent方法接受图形g作为输入。然而,稍后,我想更新棋盘,那么当用户做点击之类的事情时,我如何告诉在游戏开始时绘制棋盘的同一个g绘制其他东西呢?

我相信这应该有一个很简单的答案。

共有1个答案

薛博艺
2023-03-14

每个JComponent(Swing组件)都有一个repaint()方法,只需调用它来告诉DrawingManager重新绘制组件。

所有的绘图代码都应该在PaintComponent方法中,这意味着您不在其他任何地方绘制任何东西(您只在调用PaintComponent的过程中绘制,当然您可以用方法结构化绘图代码)。

此方法需要访问指示应该绘制的内容和位置的状态。这是因为操作系统可以请求重新绘制,然后只调用jcomponent中的绘制方法。

 类似资料:
  • 将显示JFrame和JPanel,但paintComponent方法不在JPanel上绘制。我只看到我添加的JLabel、JTextField和JButton,而没有看到应该在JPanel上绘制的内容。

  • 问题内容: 我正在做一项家庭作业,我应该制作一个程序,使您可以绘制自定义形状和线条,并在屏幕上移动它们。 最初,我使用公共空隙进行绘画,但是当我调用重绘时,形状会闪烁。 因此,我切换到。但是,当我尝试绘制形状时,没有任何显示。我相信这是因为它不在顶部绘画。 框架在3行中有3个面板。 我想绘制的面板自然是Draw Box面板。 这是我目前拥有的代码: 问题答案: 您的Main类扩展了JPanel,具

  • 我正在遵循我上一篇关于绘画的帖子中的建议,即Oracle Swing教程。现在我对何时以及如何调用paintComponent()方法感到困惑。 下面是课程: 教程说,两种重绘方法都是重绘以前的鼠标位置以及新的鼠标位置。我明白,但是paintComponent从何而来?当我们说重绘时,它被调用了吗?如果是这样,为什么不在前面的位置也画一个矩形呢?

  • 我最初是这样制作程序的。我使用extends Canvas和update方法来不断地绘制更多的点。我的理解是,每次调用repaint()时,新的点都会通过使用update()方法添加到现有的画布上。如果方法是paint()而不是update(),那么每次调用repaint()时,它将绘制一个只有50个点的新画布。这是我的扩展画布的BarnsleyFern类。 下面的代码是扩展JFrame的Barn

  • 问题内容: 我尝试了一些用Java绘图的源代码,它们工作正常,但是当我尝试制作自己的源代码时,我无法使用该方法!我再次查看了自己拥有的代码,并查看了Oracle页面中的一些教程,但是我似乎无法得知为什么它不起作用。有人可以检查一下,告诉我这里有什么问题吗? 主要方法:公共类主要 板: car.java: 没有错误,它向我显示了正确的图像宽度,计时器也触发,也可以正常工作,但是图像无法绘制!该方法只