如下代码,swing的使用部分,用一个JDialog去实现一个小程序,但是每次运行都提示有错误,如果非要执行也能执行,程序运行也没错,求高手解答为什么会提示错误。import java.lang.reflect.Array;
import java.util.Scanner;
import java.awt.*;
import java.awt.event.*;import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JTextField;public class practice 
{
public static void main(String[] args)
{
My m=new My();

}
}
 class My extends JFrame implements ActionListener
 {
 JButton b;
 JTextField t;
 JDialog d;
 public My()
 {
 b=new JButton("猜一个随机数~");
 t=new JTextField();
 b.addActionListener(this);
//  setSize(200,200);
//  setBackground(Color.pink);
//  setSize(400,400);
 
 d=new JDialog(this,"34",true);
//  d.setBackground(Color.pink);
 d.setBounds(200, 200, 200, 200);
 d.add("South",b);
 d.add("North",t);
 d.setVisible(true);
 }
 public void actionPerformed(ActionEvent e)
 {
 if(b.getActionCommand().equals("猜一个随机数~"))
 {
 String s=t.getText();
 int a=(int)(Math.random()*6+1);
 int x=Integer.parseInt(s);
 if(x==a)
 {
 this.dispose();
 }
 if(x<a)
 {
 t.setText("小了");
 }
 if(x>a)
 {
 t.setText("大了");
 }
 }
 }
 }
 

解决方案 »

  1.   

    Exception in thread "main" java.lang.NullPointerException: null pData
    at sun.awt.windows.WButtonPeer.create(Native Method)
    at sun.awt.windows.WComponentPeer.<init>(WComponentPeer.java:630)
    at sun.awt.windows.WButtonPeer.<init>(WButtonPeer.java:42)
    at sun.awt.windows.WToolkit.createButton(WToolkit.java:327)
    at java.awt.Button.addNotify(Button.java:160)
    at java.awt.Container.addNotify(Container.java:2578)
    at java.awt.Window.addNotify(Window.java:662)
    at java.awt.Dialog.addNotify(Dialog.java:748)
    at java.awt.FileDialog.addNotify(FileDialog.java:266)
    at java.awt.Dialog.conditionalShow(Dialog.java:892)
    at java.awt.Dialog.show(Dialog.java:1040)
    at java.awt.Component.show(Component.java:1516)
    at java.awt.Component.setVisible(Component.java:1468)
    at java.awt.Window.setVisible(Window.java:841)
    at java.awt.Dialog.setVisible(Dialog.java:991)
    at MyFrame.<init>(first.java:49)
    at first.main(first.java:19)
      

  2.   

    恩,能运行的,但是每次运行前,eclipse都提示有错误,我点继续就运行了
      

  3.   

    package a;import java.lang.reflect.Array;
    import java.util.Scanner;
    import java.awt.*;
    import java.awt.event.*;import javax.swing.JButton;
    import javax.swing.JDialog;
    import javax.swing.JFrame;
    import javax.swing.JTextField;public class Test {
    public static void main(String[] args) {
    My m = new My(); }
    }class My extends JFrame implements ActionListener {
    JButton b; JTextField t; JDialog d; public My() {
    b = new JButton("猜一个随机数~");
    t = new JTextField();
    b.addActionListener(this);
    d.setVisible(true);
    d = new JDialog(this, "34", true);
    // d.setBackground(Color.pink);
    d.setBounds(200, 200, 200, 200);
    d.add("South", b);
    d.add("North", t);



    } public void actionPerformed(ActionEvent e) {
    if (b.getActionCommand().equals("猜一个随机数~")) {
    String s = t.getText();
    int a = (int) (Math.random() * 6 + 1);
    //做一个正则验证   保证是数字才能转 不然会报错
    String regex = "\\d+";
    if(s.matches(regex)&&s!="") {
    int x = Integer.parseInt(s);
    if (x == a) {
    this.dispose();
    }
    if (x < a) {
    t.setText("小了");
    }
    if (x > a) {
    t.setText("大了");
    }
    }


    }
    }
    }