我查询了为什么我的图片没有显示在我的程序背景中。我的意思是我做了所有必要的步骤,但仍然不会显示。代码运行完美,但没有显示图像。目录写在图像的良好位置。我正在使用带gui的java。如果有人可以帮我解决我的问题,我将不胜感激:)这里的代码如下:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class hehe extends JPanel{
public hehe(){
setOpaque(false);
setLayout(new FlowLayout());
}
public static void main (String args[]){
JFrame win = new JFrame("yooooo"); // it is automaticcally hidden
JPanel mainPanel = new JPanel(new BorderLayout());
win.add(mainPanel);
JLabel titleLabel = new JLabel("title boss");
titleLabel.setFont(new Font("Arial",Font.BOLD,18));
titleLabel.setForeground(Color.blue);
mainPanel.add(titleLabel,BorderLayout.NORTH);
win.setSize(382,269); // the dimensions of the image
win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
win.setVisible(true);
}
public void paint(Graphics g) {
Image a = Toolkit.getDefaultToolkit().getImage("C:\\Users\\andrea\\Desktop\\Gui\\car"); // car is the name of the image file and is in JPEG
g.drawImage(a,0,0,getSize().width,getSize().height,this);
super.paint(g);
}
}
答案 0 :(得分:1)
super.paint()在绘制图像后绘制背景,隐藏图像。 在绘制图像之前尝试setOpaque(false)或更改顺序调用super.paint()。
还要避免在paint()方法中获取图像。经常调用Paint,因此每次在paint()上都会读取图像。为图像创建一个字段,并在创建时读取一次。
答案 1 :(得分:1)
在您提供的代码中,main()方法中没有对hehe类的引用。我猜你想要创建那个对象并将它添加到你的窗口。
此外,您还需要在文件名中包含.jpg扩展名