Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从线程绘制图像_Java_Multithreading_Image_Graphics_Concurrency - Fatal编程技术网

Java 从线程绘制图像

Java 从线程绘制图像,java,multithreading,image,graphics,concurrency,Java,Multithreading,Image,Graphics,Concurrency,我正在制作一个程序,其中一个角色将在远离程序其余部分的线程中设置动画 Thread trollAnimation = new Thread() { public void run() { if (battling) { frame++; switch (frame) { case 1: case 5: case 9: g.drawImage(troll1, 0, 0

我正在制作一个程序,其中一个角色将在远离程序其余部分的线程中设置动画

Thread trollAnimation = new Thread() {

    public void run() {
        if (battling) {
            frame++;

            switch (frame) {
            case 1: case 5: case 9:
                g.drawImage(troll1, 0, 0, null);
                break;
            case 2: case 4: case 6: case 8:
                g.drawImage(troll2, 0, 0, null);
                break;
            case 3: case 7:
                g.drawImage(troll3, 0, 0, null);
                break;
            case 10:
                g.drawImange(troll4, 0, 0, null);
                break;
            }

            if (frame == 10) {
                frame = 1;
            }
        }
    }
};

在每一行显示g.drawImage…,都会抛出一个错误,显示“g无法解析”。除了绘制图像的问题外,当batling==false时,如何正确停止线程?

在Java中,您不能在主AWT线程之外绘制…对不起,我可以编写类似于paint.drawImage(…)的东西吗;这样线程就可以将图像发送到我的绘画方法了?除了主线程,你不能在任何东西上执行绘画。好的。非常感谢。只是为了将来的知识,什么是结束一个线程的最佳方式?你可以在EDT之外画画,但你不应该,永远。。。您需要告诉渲染引擎它需要更新角色的图形,并在EDT上下文中绘制角色