要说清楚,我现在已经研究了五个多小时了,我阅读了所有相关问题和超过20个谷歌搜索,其中没有一个为我工作,没有一个专门描述我的案例。
首先,这是我的代码:
import java.util.*;
import java.applet.*;
import java.awt.*;
import java.awt.image.*;
import java.io.IOException;
import static Debug.StaticVar.*;
/*
<applet code="ImageTest" width=300 height=100>
</applet>
*/
public class ImageTest extends Applet {
Image img;
MediaTracker tracker;
public void init() {
tracker = new MediaTracker(this);
Thread Loader = new Thread(() -> {
img = getImage(getCodeBase(), "1.jpg");
tracker.addImage(img, 1);
});
Loader.setPriority(10);
Loader.start();
}
public void start() {
try {
tracker.waitForAll();
repaint();
} catch (InterruptedException e) {
}
}
public void paint(Graphics g) {
g.drawImage(img, 0, 0, null);
}
}
我的问题是不调用paint方法的重绘方法。更具体的说,如果我从另一个线程调用repaint,或者如果我将paint方法添加到子类并调用重绘但是它在我的代码中不起作用,我直接从applet主线程中调用它,则执行paint方法。请HEEEEELP,我累了