执行操作时swing中的NullPointerException

执行操作时swing中的NullPointerException,swing,Swing,这是一个老虎机游戏的登录表单,它将引发一个“NextPage”对象。我不认为这个LoginDemo.java代码与错误有任何关系,但我更愿意发布整个代码。提前感谢.. //LoginDemo.java import javax.swing.*; import java.awt.*; import java.awt.event.*; class Login extends JFrame implements ActionListener { JButton SUBMIT;

这是一个老虎机游戏的登录表单,它将引发一个“NextPage”对象。我不认为这个LoginDemo.java代码与错误有任何关系,但我更愿意发布整个代码。提前感谢..

    //LoginDemo.java
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

class Login extends JFrame implements ActionListener
{
     JButton SUBMIT;
     JPanel panel;
     JLabel label1,label2;
     final JTextField  text1,text2;
    Login()
    {
        label1 = new JLabel();
        label1.setText("Username:");
        label1.setBounds(50,50,100,30);
        text1 = new JTextField(15);
        text1.setBounds(250,50,100,30);
        label2 = new JLabel();
        label2.setText("Password:");
        label2.setBounds(50,250,100,30);
        text2 = new JPasswordField(15);
        text2.setBounds(250,250,100,30);
        //this.setLayout(new BorderLayout());

        SUBMIT=new JButton("SUBMIT");
        SUBMIT.setBounds(350,350,100,30);

         //     panel=new JPanel(new GridLayout(3,1));
            panel=new JPanel(null);
        panel.setBounds(50,50,1000,1000);
        //  panel.setLayout(new FlowLayout());
        panel.add(label1);
        panel.add(text1);
        panel.add(label2);
        panel.add(text2);
        panel.add(SUBMIT);
            add(panel,BorderLayout.CENTER);
                SUBMIT.addActionListener(this);
                setTitle("LOGIN FORM");
    }
    public void actionPerformed(ActionEvent ae)
    {
        String value1=text1.getText();
        String value2=text2.getText();
        if (value1.equals("a") && value2.equals("a")) 
        {
            NextPage page=new NextPage();
            page.setVisible(true);
            //JLabel label = new JLabel("Welcome:"+value1);
                // page.getContentPane().add(label);
            setVisible(false);
        }
        else
        {
            //System.out.println("enter the valid username and password");
            JOptionPane.showMessageDialog(this,"Incorrect login or password","Error",JOptionPane.ERROR_MESSAGE);
        }
    }
}   
class LoginDemo
{
    public static void main(String arg[])
{
    try
    {
        Login frame=new Login();
        frame.setSize(1000,1000);
        frame.setVisible(true);
    }
    catch(Exception e)
    {
        JOptionPane.showMessageDialog(null, e.getMessage());
    }

    }
}



    //NextPage.java

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import java.util.Random; 
import java.sql.*;
import java.lang.*;
import java.awt.image.*;
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
import java.io.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class NextPage extends JFrame implements Runnable, ActionListener
{
        BufferedImage  img1,i0,i1,i2,i3,i4,i5,i6,i7,i8,i9,i10,i11,i12,star1;
    JFrame f1;
    Thread t1,t2,t3;
    int x1,y1,i,j,k,l,m,n,r1,r2,r3;
    JButton b1;
    Random r=new Random();
    TextField tf1;
        JPanel p1;

    NextPage()
    {
        setBounds(50,50,1000,1000);
        p1=(JPanel)(getContentPane());
        p1.setBounds(50,50,1000, 1000);
        p1.setLayout(null);
        //tf1=new TextField(20);
        //tf1.setBounds(50,50,100,30);
        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        setTitle("Welcome");

        b1=new JButton("START");

        //p1.add(tf1);  

        b1.setBounds(150,400,100,30);
        //try{
        b1.addActionListener(this);
        //}
        /*catch(Exception e)
        {
            System.out.println(""+e);
        }*/
        add(b1);
        setVisible(true);
        try
        {       
            i0=ImageIO.read(new File("tea.jpg"));   
                 i1=ImageIO.read(new File("coffee.jpg"));
             i2=ImageIO.read(new File("bhel.jpg")); 
            i3=ImageIO.read(new File("pizza.jpg")); 
             i4=ImageIO.read(new File("icecream.jpg")); 
             i5=ImageIO.read(new File("dosa.jpg")); 
             i6=ImageIO.read(new File("idli.jpg")); 
             i7=ImageIO.read(new File("panipuri.jpg")); 
             i8=ImageIO.read(new File("orange.jpg"));   
             i9=ImageIO.read(new File("watermelon.jpg"));   
             i10=ImageIO.read(new File("pavbhaji.jpg"));    
             i11=ImageIO.read(new File("noodles.jpg")); 
             i12=ImageIO.read(new File("sandwich.jpg"));    
         }
        catch (IOException ie) 
        {
            System.out.println("Error:"+ie.getMessage());   
        }

        j=0; m=0; n=0;

        r1= r.nextInt(13);
        r2= r.nextInt(13);
        r3= r.nextInt(13);

    }
    public void init()
    {
        t1=new Thread(this);
        t2=new Thread(this);
        t3=new Thread(this);
    }   

    public void start()
    {
        t2.start();
        t3.start();
    }
    public void run()
    {
        try
        {
            if(Thread.currentThread()==t1)
            for(j=0; j<150; j++)
            //for(i=0; i<=150; i+=20)
            {   
                r1= r.nextInt(13);
                repaint();  
                t1.sleep(10);
            }

            if(Thread.currentThread()==t2)
            for(m=0; m<160; m++)
            //for(k=0; k<=150; k+=20)
            {   
                r2= r.nextInt(13);
                repaint();
                t2.sleep(10);
            }
            if(Thread.currentThread()==t3)
            for(n=0; n<170; n++)
            //for(l=0; l<=150; l+=20)
            {   
                r3= r.nextInt(13);
                repaint();
                t3.sleep(10);
            }
        }
        catch(Exception e)
        {
            System.out.println(""+e);
        }

    }

    public void paint(Graphics g)
    {
        g.setColor(Color.blue);

        g.drawRect(50,300,150,80);
        g.drawRect(200,300,150,80);
        g.drawRect(350,300,150,80);

            switch(r1)
            {
                case 0: g.drawImage(i0,65,300,this);
                break;
                case 1: g.drawImage(i1,65,300,this);
                break;
                case 2: g.drawImage(i2,65,300,this);
                break;
                case 3: g.drawImage(i3,65,300,this);
                break;
                case 4: g.drawImage(i4,65,300,this);
                break;
                case 5: g.drawImage(i5,65,300,this);
                break;
                case 6: g.drawImage(i6,65,300,this);
                break;
                case 7: g.drawImage(i7,65,300,this);
                break;
                case 8: g.drawImage(i8,65,300,this);
                break;
                case 9: g.drawImage(i9,65,300,this);
                break;
                case 10: g.drawImage(i10,65,300,this);
                break;
                case 11: g.drawImage(i11,65,300,this);
                break;
                case 12: g.drawImage(i12,65,300,this);
                break;
            }   

            switch(r2)
            {
                case 0: g.drawImage(i0,215,300,this);
                break;
                case 1: g.drawImage(i1,215,300,this);
                break;
                case 2: g.drawImage(i2,215,300,this);
                break;
                case 3: g.drawImage(i3,215,300,this);
                break;
                case 4: g.drawImage(i4,215,300,this);
                break;
                case 5: g.drawImage(i5,215,300,this);
                break;
                case 6: g.drawImage(i6,215,300,this);
                break;
                case 7: g.drawImage(i7,215,300,this);
                break;
                case 8: g.drawImage(i8,215,300,this);
                break;
                case 9: g.drawImage(i9,215,300,this);
                break;
                case 10: g.drawImage(i10,215,300,this);
                break;
                case 11: g.drawImage(i11,215,300,this);
                break;
                case 12: g.drawImage(i12,215,300,this);
                break;
            }

            switch(r3)
            {
                case 0: g.drawImage(i0,365,300,this);
                break;
                case 1: g.drawImage(i1,365,300,this);
                break;
                case 2: g.drawImage(i2,365,300,this);
                break;
                case 3: g.drawImage(i3,365,300,this);
                break;
                case 4: g.drawImage(i4,365,300,this);
                break;
                case 5: g.drawImage(i5,365,300,this);
                break;
                case 6: g.drawImage(i6,365,300,this);
                break;
                case 7: g.drawImage(i7,365,300,this);
                break;
                case 8: g.drawImage(i8,365,300,this);
                break;
                case 9: g.drawImage(i9,365,300,this);
                break;
                case 10: g.drawImage(i10,365,300,this);
                break;
                case 11: g.drawImage(i11,365,300,this);
                break;
                case 12: g.drawImage(i12,365,300,this);
                break;
            }
        }
        public void actionPerformed(ActionEvent ae)
        {
            if(ae.getSource()==b1)
            t1.start();
        }

        /*public static void main(String args[])
        {
            NextPage o=new NextPage();
        }*/
    }   
} 
//LoginDemo.java
导入javax.swing.*;
导入java.awt.*;
导入java.awt.event.*;
类登录扩展JFrame实现ActionListener
{
JButton提交;
JPanel小组;
JLabel标签1、标签2;
最终JTextField text1、text2;
登录()
{
label1=新的JLabel();
标签1.setText(“用户名:”);
标签1.立根(50,50100,30);
text1=新的JTextField(15);
文本1.立根(250,50100,30);
label2=新的JLabel();
标签2.setText(“密码:”);
标签2.立根(50250100,30);
text2=新的JPasswordField(15);
文本2.立根(250100,30);
//此.setLayout(新的BorderLayout());
提交=新按钮(“提交”);
提交.挫折(350100,30);
//面板=新JPanel(新网格布局(3,1));
panel=newjpanel(空);
专家组立根(50,5010001000);
//panel.setLayout(新的FlowLayout());
面板。添加(标签1);
面板。添加(文本1);
面板。添加(标签2);
面板。添加(文本2);
专家组。添加(提交);
添加(面板、边框布局、中心);
SUBMIT.addActionListener(this);
setTitle(“登录表单”);
}
已执行的公共无效行动(行动事件ae)
{
字符串值1=text1.getText();
字符串值2=text2.getText();
如果(值1.等于(“a”)&值2.等于(“a”))
{
下一页=新的下一页();
page.setVisible(true);
//JLabel标签=新的JLabel(“欢迎:+value1”);
//page.getContentPane().add(标签);
setVisible(假);
}
其他的
{
//System.out.println(“输入有效的用户名和密码”);
showMessageDialog(这是“不正确的登录或密码”,“错误”,JOptionPane.Error\u消息);
}
}
}   
类LoginDemo
{
公共静态void main(字符串arg[])
{
尝试
{
登录框架=新登录();
框架设置尺寸(10001000);
frame.setVisible(true);
}
捕获(例外e)
{
showMessageDialog(null,e.getMessage());
}
}
}
//NextPage.java
导入javax.swing.*;
导入java.awt.*;
导入java.awt.event.*;
导入java.applet.*;
导入java.util.Random;
导入java.sql.*;
导入java.lang.*;
导入java.awt.image.*;
导入java.awt.image.buffereImage;
导入javax.imageio.imageio;
导入java.io.*;
导入java.awt.event.ActionEvent;
导入java.awt.event.ActionListener;
公共类NextPage扩展JFrame实现可运行的ActionListener
{
缓冲区映像img1、i0、i1、i2、i3、i4、i5、i6、i7、i8、i9、i10、i11、i12、star1;
jf1帧;
螺纹t1、t2、t3;
int-x1,y1,i,j,k,l,m,n,r1,r2,r3;
按钮b1;
随机r=新随机();
文本字段tf1;
JPanel-p1;
下一页()
{
挫折(50,5010001000);;
p1=(JPanel)(getContentPane());
p1.立根(50,501000,1000);
p1.设置布局(空);
//tf1=新文本字段(20);
//tf1.立根(50,50100,30);
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE\u ON\u CLOSE);
片名(“欢迎”);
b1=新的按钮(“开始”);
//p1.添加(tf1);
b1.立根(150400100,30);
//试一试{
b1.添加ActionListener(本);
//}
/*捕获(例外e)
{
系统输出打印项次(“+e”);
}*/
添加(b1);
setVisible(真);
尝试
{       
i0=ImageIO.read(新文件(“tea.jpg”);
i1=ImageIO.read(新文件(“coffee.jpg”);
i2=ImageIO.read(新文件(“bhel.jpg”);
i3=ImageIO.read(新文件(“pizza.jpg”);
i4=ImageIO.read(新文件(“icecream.jpg”);
i5=ImageIO.read(新文件(“dosa.jpg”);
i6=ImageIO.read(新文件(“idli.jpg”);
i7=ImageIO.read(新文件(“panipuri.jpg”);
i8=ImageIO.read(新文件(“orange.jpg”);
i9=ImageIO.read(新文件(“西瓜.jpg”);
i10=ImageIO.read(新文件(“pavbhaji.jpg”);
i11=ImageIO.read(新文件(“面条.jpg”);
i12=ImageIO.read(新文件(“sandwich.jpg”);
}
捕获(IOIE)
{
System.out.println(“错误:+ie.getMessage());
}
j=0;m=0;n=0;
r1=r.nextInt(13);
r2=r.nextInt(13);
r3=r.nextInt(13);
}
公共void init()
{
t1=新螺纹(该螺纹);
t2=新螺纹(该螺纹);
t3=新螺纹(该螺纹);
}   
公开作废开始()
{
t2.start();
t3.start();
}
公开募捐
{
尝试
{
if(Thread.currentThread()==t1)

对于(j=0;j您不调用
init
方法,因此当您输入
actionPerformed
方法时,
t1
变量仍然是
null


这在stacktrace中非常明显(该行中只有一个东西可以是
null
),如果从stacktrace中看不明显,调试器会立即显示这一点。比创建包含数百行无关代码的帖子快得多。您使用变量
t1
启动应分配给此变量的线程。函数
init()创建分配给此变量的线程实例的
从未被调用。
t1
中有
null
,对
null
对象调用任何函数都会导致
null点异常

只需调用
init()
函数