Java 摆动穿线

Java 摆动穿线,java,multithreading,swing,graphics,awt,Java,Multithreading,Swing,Graphics,Awt,基本上,我有一个程序,它有一个类来创建一个基本GUI,还有一个类扩展了Canvas。这个Canvas类是以通常的方式添加到JPanel的myPanel.add(object)。现在,在这个类中,我想要一些方法来移动对象,比如矩形 我的问题是:;有没有办法让这个JPanel或它添加的对象(myCanvas)在单独的线程上运行 此外,在以下方法中: public void paint(Graphics g){ g.setColor(Color.black); g.drawRect(0

基本上,我有一个程序,它有一个类来创建一个基本GUI,还有一个类扩展了
Canvas
。这个Canvas类是以通常的方式添加到JPanel的
myPanel.add(object)
。现在,在这个类中,我想要一些方法来移动对象,比如矩形

我的问题是:;有没有办法让这个JPanel或它添加的对象(myCanvas)在单独的线程上运行

此外,在以下方法中:

public void paint(Graphics g){
    g.setColor(Color.black);
    g.drawRect(0, 0, 50, 50);
}
有没有办法将这些操作拆分为多个方法?即,绘制画布的多个方法


提前感谢。

将可绘制对象的列表存储在某个位置(可能是您的Canvas类,但我建议您在逻辑之外…),并使用其他线程更新此对象列表


您的绘图循环可以简单地清除画布(或至少需要重画的区域)并绘制这些区域。理想情况下,您的屏幕渲染应该足够快,以便进行完整的重画,并根据需要缓存子部分。

不要使用
画布
是一个Swing应用程序。使用JPanel或JComponent并重写paintComponent()方法。另外,不要忘记方法开头的super.paintComponent(g)


有关更多信息,请参阅Swing教程中的部分。

@mKorbel我认为这不是
awt
问题,尽管
Graphics
类恰好位于
java.awt
包中…@glowcoder-hmmmm也许你是对的,但OP描述了一些关于画布的内容:-)