【问题标题】:How to put a background image in a JFrame?如何将背景图像放入 JFrame 中?
【发布时间】:2021-05-31 09:05:56
【问题描述】:

我正在尝试一点 JFrame,因为我必须制作 flappy bird 项目,而且我的代码中有一个错误。

当我运行它时,它会在最大化的窗口中打开,但不会加载背景图片。我必须最小化窗口然后最大化它才能工作。

package com.company;

import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

public class Main extends JFrame{
    JButton button;
    JLabel text;
    JFrame frame;
    JPanel panel;

    public static void main(String[] args) {
        new Main();
    }

    public Main(){
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setTitle("flappyBird");
        setLocationRelativeTo(null);
        setVisible(true);
        setSize(new Dimension(100,100));
        setExtendedState(JFrame.MAXIMIZED_BOTH);

        BufferedImage img = null;
        try {
            img = ImageIO.read(new File("C:\\Users\\m11\\Documents\\FlappyBird\\spirit\\base.png"));
        } catch (IOException e) {
            e.printStackTrace();
        }
        Image dimg = img.getScaledInstance(800, 508, Image.SCALE_SMOOTH);
        ImageIcon imageIcon = new ImageIcon(dimg);
        setContentPane(new JLabel(imageIcon));
    }
}

我该如何解决?

【问题讨论】:

  • setVisible(true); 应该是最后一个。

标签: java image swing jframe


【解决方案1】:

试试这个例子:

JFrame f = new JFrame();
try {
    f.setContentPane(new JLabel(new ImageIcon(ImageIO.read(new File("test.jpg")))));
} catch (IOException e) {
    e.printStackTrace();
}
f.pack();
f.setVisible(true);

另外,实现目标的另一个好方法是使用Background Panel。

请尽量避免使用绝对路径,它们在更改目录或系统时几乎总是会破坏应用程序。

如果有帮助,请告诉我:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-13
    • 2011-02-08
    • 2017-10-02
    • 2014-01-03
    • 2022-01-25
    • 2017-07-18
    • 2013-06-05
    相关资源
    最近更新 更多