Java编程监听借口使用出错,求解决
packagejavaSwing;//这是一个计算器程序importjava.awt.*;importjava.awt.event.ActionEvent;importj...
package javaSwing;
//这是一个计算器程序
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.print.attribute.TextSyntax;
import javax.swing.*;
public class jsq extends JFrame implements ActionListener{
JPanel a,b,h;
//这里a为显示区,b为按钮
JTextField text1;
//这里定义按钮
JButton but[][];
//一个按钮数组,存放计算器按钮
public jsq () {
//设置窗体属性
this.setTitle("计算器1.1");
this.setSize(270,200);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setLayout(new FlowLayout());
//设置3个容器
a=new JPanel();
b=new JPanel();
h=new JPanel(new BorderLayout());
this.add(h);
h.add(a,BorderLayout.NORTH);
h.add(b,BorderLayout.CENTER);
//设置容器1内的控件
text1=new JTextField(20);
//text1用来显示结果
a.add(text1);
b.setLayout(new GridLayout(3,3,8,8));
JButton but[][]=new JButton[4][4];
for(int x=1;x<=3;x++)
{
for(int y=1 ;y<=3;y++)
{
but[x][y]=new JButton(((x-1)*3+y)+"");
but[x][y].addActionListener(this);
b.add(but[x][y]);
}
}
this.setVisible(true);
// TODO 自动生成的构造函数存根
}
public static void main(String[] args) {
// TODO 自动生成的方法存根
jsq a= new jsq();
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO 自动生成的方法存根
for(int x=1;x<=3;x++)
for(int y=1;y<=3;y++)
if(e.getSource()==but[x][y])
{
text1.setText(text1.getText()+(x-1)*3+y);
}
}
}
按下按钮后,报错Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
text1没输入数字
public void actionPerformed(ActionEvent e) {
// TODO 自动生成的方法存根
// System.out.println(but[2][2].getText());
JButton button = (JButton) e.getSource();
for(int x=1;x<=9;x++)
{
if(button.getText().equals(x+""))
{
text1.setText(text1.getText()+x);
System.err.println("a");
}
}
}
我是这样做的,不过还是谢谢,我在试试你的方法 展开
//这是一个计算器程序
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.print.attribute.TextSyntax;
import javax.swing.*;
public class jsq extends JFrame implements ActionListener{
JPanel a,b,h;
//这里a为显示区,b为按钮
JTextField text1;
//这里定义按钮
JButton but[][];
//一个按钮数组,存放计算器按钮
public jsq () {
//设置窗体属性
this.setTitle("计算器1.1");
this.setSize(270,200);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setLayout(new FlowLayout());
//设置3个容器
a=new JPanel();
b=new JPanel();
h=new JPanel(new BorderLayout());
this.add(h);
h.add(a,BorderLayout.NORTH);
h.add(b,BorderLayout.CENTER);
//设置容器1内的控件
text1=new JTextField(20);
//text1用来显示结果
a.add(text1);
b.setLayout(new GridLayout(3,3,8,8));
JButton but[][]=new JButton[4][4];
for(int x=1;x<=3;x++)
{
for(int y=1 ;y<=3;y++)
{
but[x][y]=new JButton(((x-1)*3+y)+"");
but[x][y].addActionListener(this);
b.add(but[x][y]);
}
}
this.setVisible(true);
// TODO 自动生成的构造函数存根
}
public static void main(String[] args) {
// TODO 自动生成的方法存根
jsq a= new jsq();
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO 自动生成的方法存根
for(int x=1;x<=3;x++)
for(int y=1;y<=3;y++)
if(e.getSource()==but[x][y])
{
text1.setText(text1.getText()+(x-1)*3+y);
}
}
}
按下按钮后,报错Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
text1没输入数字
public void actionPerformed(ActionEvent e) {
// TODO 自动生成的方法存根
// System.out.println(but[2][2].getText());
JButton button = (JButton) e.getSource();
for(int x=1;x<=9;x++)
{
if(button.getText().equals(x+""))
{
text1.setText(text1.getText()+x);
System.err.println("a");
}
}
}
我是这样做的,不过还是谢谢,我在试试你的方法 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询