在java中使用图像作为背景

时间:2014-05-15 20:35:44

标签: java image jframe

我正在使用java来实现一个包含图像作为背景的窗口。

这是我制作的代码

import java.awt.*;
import javax.swing.*;
public class FenImage extends JFrame {

private JLabel question ;
private JButton valider ;
private JPanel pan ;


public FenImage()
{
    this.setTitle("Image");
    this.setBounds(200, 500,600,450);
    this.setLayout(new BorderLayout());
    JLabel question = new JLabel(" \t \t L'image qu'on peux utiliser pour présenter ce mot est : ");
    //this.add(question);
    this.getContentPane().add(question,BorderLayout.NORTH);
   JPanel pan = new JPanel()
    {
        protected void paintComponent(Graphics g) 
        {
            super.paintComponent(g);

            ImageIcon m = new ImageIcon("1.jpg");
            Image monImage = m.getImage();
            g.drawImage(monImage, 0, 0,this);

        }
    };
   this.getContentPane().add(pan);

但是当我跑步时我只得到我添加的标签。

有什么问题?以及如何正确添加

1 个答案:

答案 0 :(得分:2)

将标签添加到面板而不是框架

JLabel question = new JLabel(" \t \t L'image qu'on peux utiliser pour présenter ce mot est : ");
JPanel pan = new JPanel()
{
        protected void paintComponent(Graphics g) 
        {
            super.paintComponent(g);

            ImageIcon m = new ImageIcon("1.jpg");
            Image monImage = m.getImage();
            g.drawImage(monImage, 0, 0,this);

        }
};
pane.setLayout(new BorderLayout());
pane.add(question, BorderLayout.NORTH);
this.getContentPane().add(pan);

你应该避免在paint方法中加载资源,因为这会增加你的内存使用量,这会使你的绘画变慢

<强>更新

ImageIcon(String)假定String值是对文件系统上文件的引用。存储在src目录中的内容将被内置到您的jar中,从而将其转换为嵌入式资源。

要加载这些资源,您需要使用Class#getResource,例如

ImageIcon m = new ImageIcon(getClass().getResource("/1.jpg"));

这假定资源位于src目录

的默认目录(顶级目录)中