当前位置: 首页 > 面试题库 >

将图像作为JPanel的背景

沈飞翔
2023-03-14
问题内容

我是Java新手,目前正在创建带有图形的游戏。我有从扩展的此类JFrame。在本课程中,我有很多JPanel需要图像作为背景的。据我所知,为了能够在JPanel中绘制图像,我需要从JPanel扩展一个单独的类,并且该类的paintComponent方法可以完成工作。但是我不想为每个类创建单独的类JPanel,我的类太多了。而且我只关心背景。我怎样才能做到这一点?带有匿名内部类吗?怎么样?

为了更好地理解,我提供了一些代码:

public GUI extends JFrame {
  private JPanel x;
  ...

  public GUI() {
   x = new JPanel();
   // put an image background to x
  }

问题答案:

为什么不制作一个包含Image??的类?

public class ImagePane extends JPanel {

    private Image image;

    public ImagePane(Image image) {
        this.image = image;
    }

    @Override
    public Dimension getPreferredSize() {
        return image == null ? new Dimension(0, 0) : new Dimension(image.getWidth(this), image.getHeight(this));
    }

    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        Graphics2D g2d = (Graphics2D) g.create();
        g2d.drawImage(image, 0, 0, this);
        g2d.dispose();
    }
}

您甚至可以提供有关应在何处绘画的提示。

这样,您可以在需要时仅创建一个实例

更新

另一个问题是,为什么?

您可以只使用a即可JLabel为您绘制图标,而无需进行任何其他工作。

有关更多详细信息,请参见如何使用标签。

这实际上是一个坏主意,因为JLabel在计算首选大小时不使用其子组件,在确定首选大小时仅使用图像的大小和文本属性,这可能导致组件的大小设置错误



 类似资料:
  • 问题内容: 我正在尝试使用在photoshop中制作的图像作为GUI的背景。我怎么做?我也做了一些我想在执行操作后显示在按钮背景中的图像… 问题答案: 对于JButton,请使用以下命令: 小组更加有趣。不过,这是一个好方法:

  • 问题内容: 如何在JPANEL上放置图像背景? 问题答案: 这是一个解释。

  • 问题内容: 有没有一种方法可以将JPanel(尚未显示)转换为BufferedImage? 谢谢, 杰夫 问题答案: 在BufferedImage中,您可以创建一个图形对象,可用于在JPanel上调用画图,如下所示: 您可能需要确保首先设置面板的尺寸。

  • 问题内容: 这是一个非常简单的程序,我已尽力而为,但JPanel并未提供背景图片。我只希望面板上有一个简单的背景图像。 这是我的代码: 提前致谢 问题答案: 更换 与

  • 我有一些代码,使用帖子特色图像作为DIV的背景... 很简单,但是我需要在这个背景上为任何没有特色图像集的帖子设置一个默认图像。 修改我上面的代码可能吗? 比如说... 如果文章有特色图片-显示它。 如果帖子没有特色图片-显示default.jpg。

  • 问题内容: 这是我的代码,它确实找到了图像,所以这不是我关心的问题,我关心的是如何使该图像成为面板的背景。我正在尝试使用Graphics,但是我不起作用,有什么想法吗?请?? 问题答案: 您的代码中有一个错误。在取消引用之前,将其设置为该行。这肯定会抛出一个。与其声明自己的Graphics对象,不如使用传递给要用于绘画的方法的那个。要在Swing中执行此操作,您应该实现绘制图像的方法,如下所示: