问题
Hello again Stackoverflow members,
The CatchTheCreature Applet class is supposed to display an image being repainted in different locations by a time delay, but for some reason the image is not being displayed.
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.Random;
import javax.swing.ImageIcon;
import javax.swing.JApplet;
import javax.swing.Timer;
public class CatchTheCreature extends JApplet {
private int height = 300;
private int width = 600;
private final int delay = 1001;
private ImageIcon image;
private Timer timer;
private int x, y;
private int counter = 0;
Random gn = new Random();
public void init() {
DotListener dot = new DotListener();
addMouseListener(dot);
image = new ImageIcon("Monster.png");
timer = new Timer(delay, new timerListener());
x = 40;
y = 40;
getContentPane().setBackground(Color.black);
}
// Action Listener Methods
private class timerListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
x = gn.nextInt(width);
y = gn.nextInt(height);
repaint();
}
}
private class DotListener implements MouseListener {
public void mousePressed(MouseEvent event) {
}
@Override
public void mouseClicked(MouseEvent event) {
if (event.getX() > (x) && event.getX() < (x + 60)
&& event.getY() < (y + 60) && event.getY() > (y)) {
x = gn.nextInt(width);
y = gn.nextInt(height);
counter = counter + 1;
repaint();
}
}
@Override
public void mouseEntered(MouseEvent event) {
}
@Override
public void mouseExited(MouseEvent event) {
}
@Override
public void mouseReleased(MouseEvent event) {
}
}
public void paint(Graphics g) {
super.paint(g);
g.setColor(Color.yellow);
image.paintIcon(this, g, x, y);
g.drawString("Clicked accuratly: " + counter, 5, 15);
}
public void start() {
timer.start();
}
public void stop() {
timer.stop();
}
}
This is my html file
<applet code = CatchTheCreature width = 250 height = 300>
</applet>
If someone can tell me how i can display the image icon on the applet I would be very grateful.
Thanks
回答1:
..image = new ImageIcon("Monster.png");
- The
String
based constructor toImageIcon
presumes theString
to represent aFile
. - A sand-boxed applet cannot access
File
objects, but can accessURL
s coming from the same code base/document base. - Use
getDocumentBase()
/getCodeBase()
with an relative path to the image, and the applet will be portable (assuming the image is also uploaded to the same place).
来源:https://stackoverflow.com/questions/7256095/applet-image-missing