我正在使用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);
但是当我跑步时我只得到我添加的标签。
有什么问题?以及如何正确添加
答案 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
目录