将图像设置为JFrame的背景

时间:2014-01-25 21:41:57

标签: java swing jframe

我正在制作一个小应用程序,但我想在整个窗口中将图像设置为背景。我试着像下面这样做但没有任何事情发生。图像位于类所在的文件夹中,因此我只添加了一个名称...你可以帮我吗?我该怎么办?

Container c = getContentPane();
  setContentPane(c);
   setContentPane(new JLabel(new ImageIcon("Chrysanthemum.jpg")));

2 个答案:

答案 0 :(得分:0)

一种可能性是向JFrame添加BorderLayout,其中JFrame应填充JLabel,然后设置背景,将JLabel添加到框架然后向其中添加组件,如下所示:

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class Foo extends JFrame {

    public Foo() {
        setLayout(new BorderLayout());


JLabel background = new JLabel(new ImageIcon("Untitled.png"));
    add(background);
    background.setLayout(new FlowLayout());
    background.add(new JButton("foo"));
    setSize(500, 500);
    setVisible(true);
}

public static void main(String[] args) {
    Foo foo = new Foo();
}
}

上述内容适用于我,JButton位于500 x 500 JFrame的顶部中心,具有指定的背景。

答案 1 :(得分:0)

我要做的是创建一个带有背景图片的JPanel,并将其添加到JFrame。我的一个项目中已经有一个BackgroundPanel类,这就是我的设置。

public class MyFrame extends JFrame {

    private BackgroundPanel bgPanel;

    public MyFrame() {
        bgPanel = new BackgroundPanel("Chrysanthemum.jpg");

        setTitle("MyFrame");
        setResizable(false);
        setContentPane(bgPanel);
        pack();
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocationRelativeTo(null);
        setVisible(true);
    }

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

// -- BackgroundPanel class

public class BackgroundPanel extends JPanel {
    private static final long serialVersionUID = 1L;

    private Image bg;

    public BackgroundPanel(String path) {
        this(Images.load(path).getImage());
    }

    public BackgroundPanel(Image img) {
        this.bg = img;
        setPreferredSize(new Dimension(bg.getWidth(null), bg.getHeight(null)));
    }

    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        if (bg != null) g.drawImage(bg, 0, 0, getWidth(), getHeight(), null);
    }
}