尝试将小程序上下文传递给该drawImage
方法,这允许在加载图像时通知小程序,并且它将重新绘制自己
g2.drawImage(image,100,100,100, 100, this);
而且,如果您真的很绝望,请调用invalidate()
repaint()
该start
方法
更新示例
这是我使用的代码。我加载图像没有问题:
public class TestApplet extends JApplet {
public void init() {
System.out.println("Init..." + EventQueue.isDispatchThread());
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
createGUI();
}
});
}
public void start() {
System.out.println("Start..." + EventQueue.isDispatchThread());
}
public void createGUI() {
URL documentBase = getDocumentBase();
System.out.println(documentBase);
System.out.println(getCodeBase());
// file:.../build/TestApplet.html
// file:.../build/classes/
Image image = getImage(documentBase, "MT-vol-6-STOP-image-Kogumiko-megatokyo-11434773-1559-1852.jpg");
System.out.println("image = " + image);
getContentPane().add(new GUIThing(image));
}
public class GUIThing extends JPanel {
Image image;
public GUIThing(Image i2) {
image = i2;
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
g2.drawImage(image, 0, 0, this);
g2.setColor(Color.RED);
g2.drawLine(0, 0, getWidth(), getHeight());
}
}
}
哇,好久没玩小程序了。我将您的代码从使用代码库更改为似乎有效的文档库。我正在加载 1559x1852 像素的图像,几乎没有延迟(本地)
仔细检查您的 HTML 文件中的小程序标签。我正在使用
<APPLET codebase="classes" code="stack/TestApplet.class" width=350 height=200></APPLET>
通过小程序查看器。注意代码库与文档库不同!!
我的图像与 HTML 文件位于同一位置