JPanel背景图片

时间:2010-05-30 03:18:54

标签: java image graphics 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...

2 个答案:

答案 0 :(得分:2)

此处的代码存在错误。在取消引用之前,您已将grafica设置为null。这肯定会引发NullPointerException。您应该使用传入您将用于绘制的方法的方法,而不是声明自己的Graphics对象。要在Swing中执行此操作,您应该实现paintComponent方法来绘制图像,如下所示:

  public void paintComponent(Graphics grafica) {
     grafica.drawImage(imgFondo, 0, 0, this); 
  }

请注意,您不希望执行长时间运行的任务,例如在绘图线程中从磁盘读取图像文件。上面的示例假设您已经加载了imgFondo并将其存储,以便可以在paintComponent方法中访问它。

答案 1 :(得分:0)

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

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

有关这两种方法的更多信息,请参阅Background Panel

另外,请查看Custom Painting上的Swing教程中的部分。