我遇到了一个很大的问题。我正在编写一个具有以下结构的GUI:
MainFrame(MainPanel(JScrollPane(ContentPanel(Content1,Content2,Content3)))))
MainFrame上还有一个GlassPane。 GlassPane类中有一个Timer,大约每100毫秒。
此Timer正在更新Content1的JSlider的值。 JSlider还有一个更改侦听器,它将拇指的当前X坐标提供给GlassPane。如果更改,这些坐标用于在每个刻度线上绘制一条线。这一行遍及Content1,Content2和Content3。
我目前正在尝试通过this.repaint(),MainPanel.repaint(),this.repaint(Rectangle),MainPanel.repaint(Rectangle)更新这些内容。
不幸的是所有这些方法(甚至重绘(Rectangle)o0)都调用了Content1,Content2和Content3的paintComponent方法,以某种方式创建了一个循环重绘。我无法解释这个循环,我已经非常绝望了。我非常感谢任何帮助或建议。
我真的想给你一些代码,但它太多了。我真的不知道什么是有用的。
电贺, 玉米
答案 0 :(得分:1)
在JFrame上执行this.repaint()
就足够了,它会重新绘制JFrame上的所有对象(组件)。