想在JFrame上添加一张图片,代码如下,不报任何的错误,但是就是无法显示图片:
import java.awt.*;import javax.swing.*;public class AddImage extends JFrame {
JScrollPane scrollPane;
ImageIcon icon;
public AddImage()
{
icon = new ImageIcon("E://Java项目//管理信息系统//3.jpg");
JPanel panel = new JPanel() {
private static final long serialVersionUID = 1L; public void paintComponents(Graphics g) {
g.drawImage(icon.getImage(), 0, 0, null);
super.paintComponents(g);
}
};
        panel.setOpaque(false);
        panel.setPreferredSize( new Dimension(400, 400) );
scrollPane = new JScrollPane(panel);
getContentPane().add(scrollPane);
JButton b1 = new JButton("你好");
panel.add(b1);
} public static void main(String[] args) {
AddImage jframe = new AddImage();
jframe.setSize(300, 300);
        jframe.setLocationRelativeTo( null );
jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jframe.setVisible(true);
}}

解决方案 »

  1.   

    你画到JFrame里就能显示了,还有你没把JPanel加到这个JFrame里面去
      

  2.   

    知道自己错在什么地方了把public void paintComponents(Graphics g)改成protected void paintComponent(Graphics g)就可以运行了,但是不知道为什么要这样改,在Eclipse中如何方便的重写JPanel的方法paintCopomnent呢?
      

  3.   

    右键Source Override/Implement Methods
      

  4.   

    右键Source Override/Implement Methods找不到paintComponent的方法,为什么?
      

  5.   

    因为paintComponent不是JFrame的方法,而是它的父级类Container的方法,你要到Container中才能找到
      

  6.   

    Container里面也没有,我认真找过了!
      

  7.   

    那是因为你已经重写过了,所以才找不到了。。帮个忙你就不能仔细点吗?
    去看JAVA API 看Container这个类
      

  8.   

    paintComponent(Graphics g) 是 JComponent定义的方法。一般来说继承JPanel,override paintComponent绘制图片,然后添加到JFrame的contentPane里。