import java.awt.*;
import java.awt.event.*;
import javax.swing.*;public class TextFrame1 implements ActionListener {
Frame f=new Frame("第一个窗体");
int i=0;
public static void main(String[] args){

TextFrame1 tf=new TextFrame1();

tf.init();
}
     public void init()
    {  f.setSize(300,300);
f.setVisible(true);
f.addWindowListener(new MyWindowListener()); 
     Button btn=new Button("更换背景");
btn.addActionListener(new TextFrame1());
f.add(btn,"North");
     
      }
public void actionPerformed(ActionEvent e){

Image[] im={new ImageIcon("c:\\1.jpg").getImage(),
            new ImageIcon("c:\\2.jpg").getImage(),
            new ImageIcon("c:\\3.jpg").getImage(),
            new ImageIcon("c:\\4.jpg").getImage(),
            new ImageIcon("c:\\5.jpg").getImage()};
 
 f.getGraphics().drawImage(im[i],0,0,300,300,f);
     i++;
if(i==5) i=0;
 





}

class MyWindowListener extends WindowAdapter{
public void windowClosing(WindowEvent e){
e.getWindow().setVisible(false);
((Window)e.getComponent()).dispose();
System.exit(0);
}
}

解决方案 »

  1.   

    --------------------Configuration: <Default>--------------------
    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
        at TextFrame1.actionPerformed(TextFrame1.java:31)
        at java.awt.Button.processActionEvent(Button.java:392)
        at java.awt.Button.processEvent(Button.java:360)
        at java.awt.Component.dispatchEventImpl(Component.java:4630)
        at java.awt.Component.dispatchEvent(Component.java:4460)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
      

  2.   

    点击Button,btn.addActionListener(new TextFrame1());
    也就相当于重新建了个TestFrame1,可是那个init方法只在main里调用过啊...
      

  3.   

    new TextFrame1()改成tf可是有错  就当我小白了 麻烦改一下
      

  4.   

    重新设计吧...
    这个程序即使跑起来了,也是个bug程序...
    每换一次背景,就会重新new TestFrame1,而且之前的TestFrame1也不会释放...
      

  5.   


    换成这个就行了.
    btn.addActionListener(this);还有...Image[] im={new ImageIcon("c:\\1.jpg").getImage(),
    new ImageIcon("c:\\2.jpg").getImage(),
    new ImageIcon("c:\\3.jpg").getImage(),
    new ImageIcon("c:\\4.jpg").getImage(),
    new ImageIcon("c:\\5.jpg").getImage()};换到属性里还有......f.setVisible(true);放到方法的后边去
      

  6.   

    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;public class TextFrame1 implements ActionListener {
    Frame f=new Frame("第一个窗体");
    int i=0;
    public static void main(String[] args){TextFrame1 tf=new TextFrame1();tf.init();
    }
    public void init()
    { f.setSize(300,300);
    f.setVisible(true);
    f.addWindowListener(new MyWindowListener());  
    Button btn=new Button("ok");
    btn.addActionListener(this);
    f.add(btn,"North");}
    public void actionPerformed(ActionEvent e){Image[] im={new ImageIcon("c:\\1.jpg").getImage(),
    new ImageIcon("c:\\2.jpg").getImage(),
    new ImageIcon("c:\\3.jpg").getImage(),
    new ImageIcon("c:\\4.jpg").getImage(),
    new ImageIcon("c:\\5.jpg").getImage()};
      
    f.getGraphics().drawImage(im[i],0,0,300,300,f);
    i++;
    if(i==5) i=0;
      
    }  
    }class MyWindowListener extends WindowAdapter{
    public void windowClosing(WindowEvent e){
    e.getWindow().setVisible(false);
    ((Window)e.getComponent()).dispose();
    System.exit(0);
    }
    }ok!!!!!!