执行操作时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()
函数