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);
}
}
У меня есть класс ресурсов, который выглядит так, когда я помещаю файл изображения.Java Image не сразу загружается как ресурс
В моей главной JPanel (чертежная доска) У меня есть этот
private Image image = Resources.getImage("image.png");
в моем компоненте краски у меня есть
g2.drawImage(image, x, y, width, height, null);
моя проблема, когда я сначала создать окно (прямоугольник), в котором изображение должно нарисовать себя в правой части, чтобы пользователь мог знать, что он движимый (например, ручка чашки), изображение не появляется сразу, но когда я нажимаю туда, где он должен быть, он появляется. Мне интересно, связано ли это с загрузкой классов или чем-то еще?
* UPDATE Это то, что подразумевается под 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);
}
}
Я подозреваю, что ваша проблема находится где-то еще в вашем коде, возможно, как вы добавляете компоненты, будь то переоформление контейнеров, ... Вы можете отправить больше кода. –