JPanel背景图片

这是我的代码,它确实找到了图像,这不是我的关注,我关心的是如何使该图像成为面板的背景。 我正在尝试使用图形,但我不工作,任何想法? 请??

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方法中访问它。

如果您要以原始大小绘制图像,那么您需要做的就是将图像添加到JLabel,然后通过设置其布局管理器将标签用作Container。

您需要进行自定义绘画的唯一时间是您想要缩放或平铺背景图像或进行其他精美绘画。

有关这两种方法的更多信息,请参见背景面板

另外,请查看自定义绘画的Swing教程中的部分。