java MenuBar NullPointerException 哪里错了呢?

来源:百度知道 编辑:UC知道 时间:2024/07/01 06:48:36
想写一个度量衡转换的小程序,结果在设计GUI的时候测试一下,发现个自己搞不懂的错误。编译可以通过,执行的时候会抛NullPointerException

import java.awt.*;
import java.awt.event.*;

public class WeightsAndMeasures extends Frame {

MenuBar mb;
Menu linear;
Menu km,m,cm,mm,in,ft,mile;
MenuItem ikm,im,icm,imm,iin,ift,imile;

Menu area;
Menu squareMeter,squareIn,squareft,acre,squareMile,squareCm,squareMm;
MenuItem isquareMeter,isquareIn,isquareft,iacre,isquareMile,isquareCm,isquareMm;

Menu weights;
Menu kilogram,metricTon,pound,shortTon,longTon;
MenuItem ikilogram,imetricTon,ipound,ishortTon,ilongTon;

Menu capacity;
Menu liter,kiloliter,usGallon,impGallon,barrel,cubicFeet,cubicInch;
MenuItem iliter,ikiloliter,iusGallon,iimpGallon,ibarrel,icubicFeet,icubicInch;

Menu temperature;
Menu c,f,k;
MenuItem ic,iif,ik;

TextField tf1,tf2;

你creatMenu()方法里的各个Menu顺序全错了,对象要先new出来,然后才可以add()上去的,没实例化的对象当然是null的,把creatMenu()里面的东西更改如下:

ikm = new MenuItem("公里(km)");
im = new MenuItem("公尺(m)");
icm = new MenuItem("公分(cm)");
imm = new MenuItem("公厘(mm)");
iin = new MenuItem("公寸(in)");
ift = new MenuItem("英尺(ft)");
imile = new MenuItem("英里(mile)");

area = new Menu("面积");
squareMeter = new Menu("平方米");
squareIn = new Menu("平方英寸");
squareft = new Menu("平方英尺");
acre = new Menu("英亩");
squareMile = new Menu("平方英里");
squareCm = new Menu("平方厘米");
squareMm = new Menu("平方毫米");
isquareMeter = new MenuItem("平方米");
isquareIn = new MenuItem("平方英寸");
isquareft = new MenuItem("平方英尺");
iacre = new MenuItem("英亩");