JAVA图形用户界面问题

来源:百度知道 编辑:UC知道 时间:2024/06/21 19:46:15
先大致看看我这程序,编译可以通过,不过运行时却抛出异常:
Exception int thread "main" java.lang.NullPointerException
at Dial.<init>(Dial.java:36)
at Dial.main(Dial.java:59)
也就是下面程序中注释的那两行,求高人指点指点为什么会这样?

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

public class Dial extends JPanel implements ActionListener{

JButton dlg;
JTextArea ta;
JDialog d;
JButton ok;
JTextField tf1;
JTextField tf2;
JLabel name;
JLabel passWord;

public Dial(){
ta = new JTextArea(5,5);
dlg = new JButton("dialog");
ok = new JButton("ok");
tf1 = new JTextField();
tf2 = new JTextField();
name = new JLabel("name");
passWord = new JLabel("passWord");

dlg.addActionListener(this);
ok.addActionListener(this);

JPanel checkPanel1 = new JPanel();
checkPane

因为你的JDialog d;还没有初始化!
在下面加上d = new JDialog()就可以了。

d.add("West",checkPanel1); //第36行
d.add("Center",checkPanel2);
d.add("South",ok);

你的这一段都是错的 你要写东西南北的话不是这么写的 它们都是常量是
B开头的那个布局管理器的所以在看看布局管理器吧。

d.add("West",checkPanel1); //第36行
d.add("Center",checkPanel2);
d.add("South",ok);
应该改成:
d.add(checkPanel1,BorderLayout.WEST); //第36行
d.add(checkPanel2,BorderLayout.Center);
d.add(ok,BorderLayout.South);

明白吗?不明白再问。

你的d没有初始化,加上 d = new JDialog(); 就可以了

试过了,改了以后就可以了