我有一个图像,我想在applet中显示它,问题是图像不会显示。我的代码有问题吗?
...谢谢
这是我的代码:
import java.applet.Applet;
import java.awt.*;
public class LastAirBender extends Applet
{
Image aang;
public void init()
{
aang = getImage(getDocumentBase(), getParameter("images.jpg"));
}
public void paint(Graphics g)
{
g.drawImage(aang, 100, 100, this);
}
}
答案 0 :(得分:3)
aang = getImage(getDocumentBase(), getParameter("images.jpg"));
我怀疑你做错了什么,这应该很简单:
aang = getImage(getDocumentBase(), "images.jpg");
HTML / applet元素的内容是什么?图像的名称是什么?该图像与HTML在同一目录中吗?
第二行(已更改)代码将尝试将images.jpg
文件加载到与HTML相同的目录中。
当然,您可能需要添加MediaTracker
来跟踪图像的加载,因为Applet.getImage()
方法立即(现在)返回,但是异步加载(稍后)。
尝试这个确切的实验:
将此来源保存为${path.to.current.code.and.image}/FirstAirBender.java
。
/*
<applet class='FirstAirBender' width=400 height=400>
</applet>
*/
import javax.swing.*;
import java.awt.*;
import java.net.URL;
import javax.imageio.ImageIO;
public class FirstAirBender extends JApplet {
Image aang;
public void init() {
try {
URL pic = new URL(getDocumentBase(), "images.jpg");
aang = ImageIO.read(pic);
} catch(Exception e) {
// tell us if anything goes wrong!
e.printStackTrace();
}
}
public void paint(Graphics g) {
super.paint(g);
if (aang!=null) {
g.drawImage(aang, 100, 100, this);
}
}
}
然后转到提示并编译代码,然后使用源名称作为参数调用applet viewer。
C:\Path>javac FirstAirBender.java
C:\Path>appletviewer FirstAirBender.java
C:\Path>
你应该在applet中看到你的图像,从左上角以100x100绘制。
答案 1 :(得分:2)
1)我们生活在21世纪,然后请JApplet而不是Applet
import java.awt.*;
import javax.swing.JApplet;
public class LastAirBender extends JApplet {
private static final long serialVersionUID = 1L;
private Image aang;
@Override
public void init() {
aang = getImage(getDocumentBase(), getParameter("images.jpg"));
}
@Override
public void paint(Graphics g) {
g.drawImage(aang, 100, 100, this);
}
}
2)Icon/ImageIcon会更好地寻找JLabel
3)请问getImage(getDocumentBase(), getParameter("images.jpg"));
那里我将等待像
这样的东西URL imageURL = this.getClass().getResource("images.jpg");
Image image = Toolkit.getDefaultToolkit().createImage(imageURL);
Image scaled = image.getScaledInstance(100, 150, Image.SCALE_SMOOTH);
JLabel label = new JLabel(new ImageIcon(scaled));
答案 2 :(得分:0)
好,以上答案是正确的。这是我用来显示图像的代码。希望对您有所帮助:
/*
<applet code = "DisplayImage.class" width = 500 height = 300>
</applet>
*/
import java.applet.Applet;
import java.awt.*;
public class DisplayImage extends Applet
{
Image img1;
public void init(){
img1 = getImage(getCodeBase(),"Nature.jpg" );
}
public void paint(Graphics g){
g.drawImage(img1, 0,0,500,300,this);
}
}
在上面的代码中,我们创建一个图像类对象,并从代码库指定的位置获取图像。然后使用drawImage方法绘制图像。那些对了解getCodeBase()和getDocumentBase()方法的值感兴趣的人可以在paint方法中添加以下代码。它们实际上是项目文件夹中src文件夹的位置:-
String msg;
URL url=getDocumentBase();
msg="Document Base "+url.toString();
g.drawString(msg,10,20);
url=getCodeBase();
msg="Code Base "+url.toString();
g.drawString(msg,10,40);
还要注意一点:-确保图像和类在src文件夹中没有相同的名称。这阻止了我的图像显示。