基本上,我有一个程序,它有一个类来创建一个基本的GUI,另一个类扩展Canvas
。此Canvas类以通常的方式myPanel.add(object)
添加到JPanel中。现在,在这个类中,我想要有方法来移动矩形等对象。
我的问题是这些;有没有办法让这个JPanel或其添加的对象(myCanvas)在一个单独的线程上运行?
另外,在以下方法中:
public void paint(Graphics g){
g.setColor(Color.black);
g.drawRect(0, 0, 50, 50);
}
有没有办法将这些操作分成多个方法?即绘制到Canvas的多个方法?
提前致谢。
答案 0 :(得分:1)
在某处存储一个可绘制对象的列表(可能是你的Canvas类,但我建议你在逻辑的外部......)并使用你的其他线程来更新这个对象列表。
您的绘图循环可以简单地清除画布(或至少需要重绘的区域)并绘制它们。理想情况下,您的屏幕渲染应该足够快,以便在必要时进行完整的重绘,缓存子部分。
答案 1 :(得分:1)
不要使用Canvas
是Swing应用程序。使用JPanel或JComponent并覆盖paintComponent()方法。另外,不要忘记方法开头的super.paintComponent(g)。
有关详细信息,请参阅Performing Custom Painting上的Swing教程中的部分。