public class Resources
{
private static Resources myResource = new Resources();
public static Image getImage(String name)
{
URL url = myResource.getClass().getResource(name);
//URL url = Resources.class.getResource(name);
return Toolkit.getDefaultToolkit().getImage(url);
}
}
我有一个看起来像这样的资源类,我在其中放置图像文件。
在我的主 jpanel(绘图板)中我有这个
private Image image = Resources.getImage("image.png");
在我的绘画组件中,我有
g2.drawImage(image, x, y, width, height, null);
我的问题是,当我第一次创建一个盒子(矩形)时,图像应该将其自身绘制到右侧,以便用户知道它是可移动的(如杯子 handle ),图像不会弹出马上,但是当我单击它应该在的位置时,它就会出现。我想知道这是否与类加载有关?
*更新 这就是SSCCE LMNOPQRSTUVWXYZ 的意思吗?
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.*;
import java.net.*;
import javax.imageio.ImageIO;
import javax.swing.*;
public class ShowImage {
static public void main(String args[]) throws Exception {
JFrame frame = new JFrame("Display image");
JPanel panel = new testImage();
frame.add(panel);
frame.setSize(500, 500);
//frame.pack();
//JOptionPane.showMessageDialog(null, "Done setting size");
frame.setVisible(true);
frame.setExtendedState(frame.getExtendedState() | JFrame.MAXIMIZED_BOTH);
}
}
class testImage extends JPanel {
Image image = Resources.getImage("pin.png");
public void paintComponent(Graphics g) {
g.drawImage(image, 0, 0, 40, 40, null);
}
}
class Resources
{
private static Resources myResource = new Resources();
// NOTE: there is no error checking here so if parameter is mistyped
// somewhere else in code, then this will probably throw a nullpointerexception
public static Image getImage(String name)
{
// TODO: Find out which way is better or preferred
URL url = myResource.getClass().getResource(name);
return Toolkit.getDefaultToolkit().getImage(url);
}
}
最佳答案
尝试将图像放入 ImageIcon 中,您可以将其放入其中。在 JLabel 中。这将为您处理加载。
如果这不是您想要的,请搜索 MediaTracker。
关于Java 图像未立即作为资源加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4927092/