java gui image问题:不在后台显示

时间:2011-01-05 12:24:54

标签: java image user-interface swing

我查询了为什么我的图片没有显示在我的程序背景中。我的意思是我做了所有必要的步骤,但仍然不会显示。代码运行完美,但没有显示图像。目录写在图像的良好位置。我正在使用带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);
            }
            }

2 个答案:

答案 0 :(得分:1)

super.paint()在绘制图像后绘制背景,隐藏图像。 在绘制图像之前尝试setOpaque(false)或更改顺序调用super.paint()。

还要避免在paint()方法中获取图像。经常调用Paint,因此每次在paint()上都会读取图像。为图像创建一个字段,并在创建时读取一次。

答案 1 :(得分:1)

在您提供的代码中,main()方法中没有对hehe类的引用。我猜你想要创建那个对象并将它添加到你的窗口。

此外,您还需要在文件名中包含.jpg扩展名