Java 图像未立即作为资源加载

标签 java image resources loading

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/

相关文章:

php - 在php中连接进程的管道

java - flyway 命令行工具 - 重新执行失败的 DDL 的选项是什么?

java - 如何将RGB值与其颜色名称对应起来?

使用 C 复制从 tif 文件生成的 8 位灰度 bmp 文件

image - Dart-获取ImageElement的像素颜色

java - 显示 jar 文件中的图像

java - 这个递归方法有什么作用呢?

java - SimpleDate 允许 null

c++ - 如果图像是 `==`,OpenCV 如何让 bool 为真,否则如何让 bool 为假?

c# - 项目间资源共享策略