我正在使用JPanel的自定义子类来为我提供对某些图像显示的更多控制。它的代码如下。
然而,在Netbeans中,在设计模式下,我希望能够看到我正在使用的图像,而不是简单地查看对象的轮廓。
有一个图像属性,但我目前设置图像的唯一方法是将自定义代码注入图像属性。 但是,我不确定我需要包含哪些代码才能查看图像,或者是否有更简单的方法。
import javax.swing.*;
import java.awt.*;
public class ImagePanel extends JPanel {
private Image img;
public void setImage(String img) {
this.img = new ImageIcon(img).getImage();//setImage(new ImageIcon(img).getImage());
}
public void setImage(Image img) {
int width = this.getWidth();
int height = (int) (((double) img.getHeight(null) / img.getWidth(null)) * width);
this.img = img.getScaledInstance(width, height, Image.SCALE_SMOOTH);
}
public void paintComponent(Graphics g) {
g.drawImage(img, 0, 0, this);
}
}
alt text http://img691.imageshack.us/img691/2128/tempscreen.png
答案 0 :(得分:1)
变化:
public void setImage(String img) {
要:
public void setImageName( String img ) {
重建,并在设计器中设置ImageName属性。在原始代码中,设计者认为bean属性Image的类型是java.awt.Image,而不是String。它不知道如何在设计时为bean指定java.awt.Image。但是它可以很容易地将Strings传递给你的bean,你只需要给它一个明确的String bean属性(ImageName)。
答案 1 :(得分:0)
new ImageIcon("/path/to/your/image.jpg").getImage();
答案 2 :(得分:0)
另一种方法是使用工具包,但当然你正在做一个应用程序,而不是applet,对吗?
URL url = new URL(this.getCodeBase(), "/path/to/image/here.gif");
temp = ImageIO.read(url);
我也遇到了ImageIcon的问题。