这是我的代码,它确实找到了图像,所以这不是我关心的问题,我关心的是如何使该图像成为面板的背景。我正在尝试使用Graphics,但是我不起作用,有什么想法吗?请??
try {
java.net.URL imgURL = MAINWINDOW.class.getResource(imagen);
Image imgFondo = javax.imageio.ImageIO.read(imgURL);
if (imgFondo != null) {
Graphics grafica=null;
grafica.drawImage(imgFondo, 0, 0, this);
panel.paintComponents(grafica);
} else {
System.err.println("Couldn't find file: " + imagen);
}
} catch...
最佳答案
您的代码中有一个错误。在取消引用之前,将grafica
设置为null
。这肯定会抛出一个NullPointerException
。与其声明自己的Graphics对象,不如使用传递给要用于绘画的方法的那个。要在Swing中执行此操作,您应该实现paintComponent
方法来绘制图像,如下所示:
public void paintComponent(Graphics grafica) {
grafica.drawImage(imgFondo, 0, 0, this);
}
请注意,您不想执行长时间运行的任务,例如从绘画线程中的磁盘中读取图像文件。上面的示例假定您已经加载了
imgFondo
并进行了存储,以便可以在paintComponent
方法中对其进行访问。