如果你用的是J组件,请重载protected  void paintComponent(Graphics g)  而不是protected  void paint(Graphics g)。原因是因为所有的J组件都是paint出来的。

解决方案 »

  1.   

    我重载了paintComponent,效果还是一样,要在显示窗口后再次让其强制重画才行
      

  2.   

    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;class ImgPanel extends JPanel
    {

    public void paintComponent(Graphics g)
    {
    super.paintComponent(g);
    ImageIcon img = new ImageIcon("images\\big.jpg");
    img.paintIcon(this,g,0,0);

    }
    }public class ImageTest extends JFrame
    {
    public ImageTest()
    {
    Container contentPane = getContentPane();
    contentPane.add(new ImgPanel());

    setTitle("Image Test");
    setSize(800,600);
    addWindowListener(new WindowAdapter()
    {
    public void windowClosing(WindowEvent e)
    {
    System.exit(0);
    }
    });
    }

    public static void main(String[] args)
    {
    JFrame frame = new ImageTest();
    frame.setVisible(true);
    }
    }
      

  3.   

    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;class ImgPanel extends JPanel
    {

    public void paintComponent(Graphics g)
    {
    super.paintComponent(g);
    Image img = getToolkit().getImage("images\\big.jpg");
    g.drawImage(img,0,0,this);//这句应该这样写

    }
    }public class ImageTest extends JFrame
    {
    public ImageTest()
    {
    Container contentPane = getContentPane();
    contentPane.add(new ImgPanel());

    setTitle("Image Test");
    setSize(800,600);
    addWindowListener(new WindowAdapter()
    {
    public void windowClosing(WindowEvent e)
    {
    System.exit(0);
    }
    });
    }

    public static void main(String[] args)
    {
    JFrame frame = new ImageTest();
    frame.setVisible(true);
    }
    }