如题!

解决方案 »

  1.   

    程序中缺了个repaint()语句!所以只有在从最小化到最大化或者··就是系统自动调用update()完成刷新。如果加上repaint()语句,它会重新绘制该组件!
      

  2.   

    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    public class T extends JFrame
    {
    Image im;
    Panel_ p;
    public T()
    {
    setSize(500,400);
    setVisible(true);
    //setLayout(new BorderLayout());
    im=Toolkit.getDefaultToolkit().getImage("fly.jpg");
    p=new Panel_(im);
    add(p);

    }
    public static void main(String args[])
    {
    new T();
    }
    }
    class Panel_ extends JPanel
    {
    Image image;
    public Panel_(Image im)
    {
    image=im;
    }
    public void paint(Graphics g)
    {
    g.drawImage(image,10,10,200,200,null);

    }
    }
      

  3.   

    把setVisible(true);放到public T()最后看看
      

  4.   

    如果不使用JPanel,而是直接在JFrame中显示图片,是可以直接显示出来的!但是如果使用JPanel来绘图形,好像是没有一个简易的方法,我在这里顶一下,期待高手的出现:直接在JFrame中显示,是很简单的:
    import java.awt.*;
    import javax.swing.ImageIcon;
    import javax.swing.JFrame;public class Ttest extends JFrame {    public static void main(String[] args) {             Ttest test = new Ttest();
            test.setSize(600,600);
            test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            test.setVisible(true);
            test.run();
        }    private static final int FONT_SIZE = 24;
        private Image im;    public void run() {    
              im = new ImageIcon("fly.gif").getImage();
            repaint();
    }        
        public void paint(Graphics g) {
                g.drawImage(im, 0, 0, null);
        }}
      

  5.   

    以前也碰到过这样的情况,解决一下:import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    public class T extends JFrame
    {
    Image im;
    Panel_ p;
    public T()
    {
    setSize(500,400);
    //setLayout(new BorderLayout());
    im=Toolkit.getDefaultToolkit().getImage("fly.jpg");
    p=new Panel_(im);
    add(p);
    setVisible(true);
    }
    public static void main(String args[])
    {
    new T();
    }
    }
    class Panel_ extends JPanel
    {
    Image image;
    public Panel_(Image im)
    {
    image=im;
    }
    public void paint(Graphics g)
    {
    g.drawImage(image,10,10,200,200,null);}
    }这样就可以了,原理是:setVisible(true);后就paint(),然后.add之后却没有及时repaint(),把setVisible(true);放到后面就可以了。或者在最后再加一个:
    this.repaint();
    也可以。
      

  6.   

    如果以上方法不能解决(可能性极小,几乎不可能):
    在T()的最后一行加一个:invalidate();
      

  7.   

    刚解决这个问题,用repaintUI()