这是我的代码,它确实找到了图像,所以这不是我关心的问题,我关心的是如何使该图像成为面板的背景。我正在尝试使用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方法中对其进行访问。

10-06 09:28