如果我运行此示例代码
class ExampleGUIElement extends Panel
{
preferredSize = new Dimension(100, 100)
val rand : Random = Random
override def paintComponent(g: Graphics2D) = g.drawLine(rand.nextInt(10),rand.nextInt(10),rand.nextInt(90) + 10 ,rand.nextInt(90) + 10)
}
object GUITest extends SimpleSwingApplication
{
def top = new MainFrame
{
contents = new ExampleGUIElement
}
}
它显然只显示最初绘制的一条线。如果我想要定期重新绘制,我通常会在最外面的JFrame上创建一个调用重绘的Timer。 但是SimpleSwingApplication没有这个方法,至少我找不到它,而调用top.repaint却没有做任何事情。那么你如何定期重绘整个事物呢?
答案 0 :(得分:1)
答案 1 :(得分:1)
我意识到这已经过时了,但我将你的Panel提取到一个val并添加了一个计时器来重新绘制它:
def top = new MainFrame
{
val example = new ExampleGUIElement
contents = example
val timer=new javax.swing.Timer(250, Swing.ActionListener(e =>
{
example.repaint()
}))
timer.start()
}