java - 调用其他组件的重绘

标签 java swing graphics repaint

我正在为大学做一些小的 Java 程序,我遇到了在更新后重绘一些图形的问题。这是上下文:

我有一个主要的 Jframe,它基本上包含两个东西,一个 JComponent 用于绘制/绘制一些图形(矩形、圆形等)和一个 JMenu 用于为用户提供排序选项。

JComponent 覆盖了 paintComponent,所以我可以根据要求绘制图形。 Graphics 是具有定义 Graphic 类型的方法的自定义类,每个类都将调用自己的 drawRect() 或 drawOval()。效果很好。如果我为主 JFrame 调用 repaint(),它将按预期调用 JComponent() 的 paintComponent。

JMenu 中的一个菜单具有按不同顺序对图形进行排序的选项。因此,在我的每个选项的 ActionListner 中,我继续对包含图形的 LinkedList 进行排序。

问题是当我在 ActionListener 中完成排序时,我会调用 repaint() 来绘制 JComponent 中的图形,但它会调用 JMenu 的 repaint() 而不是...所以我的问题是如何以某种方式从 JMenu 调用 JComponent 的重绘?

谢谢。

最佳答案

One of the menus in the JMenu has options to sort the Graphics per different order. So in my ActionListner of each options I proceed with the sort of the LinkedList containing the Graphics.

然后该代码应该在组件上调用 repaint()。也就是说 LinkList 应该是绘制图形的组件的一部分。因此,您将拥有在组件上调用的类似 sort(...) 的方法。然后该方法将进行排序,然后重新绘制()组件。

这是所有 Swing 方法的工作方式,例如 setText(...)setBackground(...)。您在组件上调用这些方法,然后组件在自身上调用 repaint()

关于java - 调用其他组件的重绘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24090470/

相关文章:

c++ - 使用(MFC 的)CImage::SetPixel() 改变像素的颜色

java - 如何在主类中调用Z3_2类的方法?

java - 在Java中解密文件并将其导出到文件而不进入无限循环?

java - 套接字连接超时上限

java - 此行有多个标记 - 标记 ")"上的语法错误,;预期 - token "("上的语法错误,{预期

java - 如何将jbutton设置到数组中

java - 当鼠标悬停在 Java/Windows 中的 JMenu 对象上时听到文本(屏幕阅读器)

java - 定期刷新 BufferedImage

c - 有效地预乘图像 Alpha

r - 在 ggplot2 中的轴刻度上显示两个测量单位