CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2SE / 基础类

刚开始学java就遇到一个问题,各位帮忙看看了,欧真苯!

楼主zhanchifeixiang(展翅飞翔)2002-03-01 11:38:03 在 Java / J2SE / 基础类 提问

我用一个list控件,现想对他进行操作,但老是不成功,提示null   pointer   exception!  
  不知道什么地方错误,我创建了对象了。  
  源码如下:  
  import   java.awt.*;  
     
  public   class   order   extends   java.applet.Applet  
    {  
        public   void   init()  
        {     List   ProductList=new   List(4,false);  
              ProductList.addItem("Oscar");  
              ProductList.addItem("Lionhead");  
              ProductList.addItem("Jack   Dempsey");  
              ProductList.addItem("Angelfish");  
               
              add(ProductList);  
              ......  
              ......              
              resetValues();  
          }  
           
          public   void   resetValues(){  
              SubTotalLabel.setText("$0.0");  
              TotalLabel.setText("$0.0");  
              AmountLabel.setText("$0.0");  
              PricePerItemLabel.setText("$0.0");  
               
              ProductList.select(1);                       **xxxxxxxxxxxxxxxxxxxxxx**  
              SizeChoice.select(1);  
              OrderAmountSlider.setValue(0);  
               
              NameEntryField.setText("");  
              StreetEntryField.setText("");  
              CityEntryField.setText("");  
              ZipEntryField.setText("");  
          }  
           
          public   boolean   handleEvent(Event   InEvent)  
          {  
              if(InEvent.id==Event.SCROLL_LINE_UP||InEvent.id==Event.SCROLL_LINE_DOWN){    
                    updateValues();  
              }else      
              if(InEvent.target==ProductList){  
                    updateValues();  
              }else  
              if(InEvent.target==ClearButton){  
                    resetValues();  
              }else  
              if(InEvent.target==QuitButton){  
                        //Alabel.setText("Quit   Button");  
              }else  
              if(InEvent.target==SubmitButton){  
                        //Alabel.setText("Submit   Button");  
              }              
              return   super.handleEvent(InEvent);  
          }  
           
          public   boolean   action(Event   InEvent,Object   SomeObject){  
            if(InEvent.target==SizeChoice){  
                  updateValues();  
                  return   true;  
            }else  
            if(InEvent.target==NameEntryField){  
                  return   true;  
            }else  
              return   false;  
          }      
   
          private   void   updateValues(){  
                。。。。。。。  
                。。。。。。。        
          }  
    }  
   
  打杈的地方报错!  
  问题点数:20、回复次数:21Top

1 楼zhanchifeixiang(展翅飞翔)回复于 2002-03-01 11:47:01 得分 0

补充一下,不至list出错,只要一牵扯控件事件的,都报这个错误。各位老兄帮帮忙呀Top

2 楼GJA106(中文字符)回复于 2002-03-01 11:52:52 得分 7

用ProductList.getItem(ProductList.getSelectedIndexes());Top

3 楼GJA106(中文字符)回复于 2002-03-01 11:57:35 得分 0

getSelectedIndexes是当你把List设成setMultipleMode(true)时用(允许一次选择多项);如果设成setMultipleMode(false)则用getSelectedIndex()就可以了。Top

4 楼zhanchifeixiang(展翅飞翔)回复于 2002-03-01 12:00:14 得分 0

不是,我是想在此处将list初始化,设置为1。  
  而且,不至list出错,choice等都是这个错误,不明白为什么Top

5 楼peacock_king(孔雀王)回复于 2002-03-01 12:03:22 得分 1

好像是jdk1.0的事件处理模型的兼容问题(action())  
  怎么不用新事件模型?  
  就是somecomponent.add***listener()  
  处理事件用对应的方法。  
   
  Top

6 楼zhanchifeixiang(展翅飞翔)回复于 2002-03-01 12:08:38 得分 0

peacock_king(孔雀王)   :  
      错误是在页面开始加载applet时就报错的,时间处理还没有开始。我觉得可能不是这个问题。Top

7 楼coldjava(玩主)回复于 2002-03-01 12:54:47 得分 1

看不懂,怎么没接口?Top

8 楼GJA106(中文字符)回复于 2002-03-01 13:46:57 得分 0

没有产生什么异常。你是用什么编译的。  
  封住不必要的代码。  
  直接在  
    List     ProductList=new     List(4,false);  
    ProductList.addItem("Oscar");  
    ProductList.addItem("Lionhead");  
    ProductList.addItem("Jack     Dempsey");  
    ProductList.addItem("Angelfish");  
  后添加select(1)看成不成功。  
  你把事件包包进去了没有:import   java.awt.event.*;  
  Top

9 楼zhanchifeixiang(展翅飞翔)回复于 2002-03-01 14:09:19 得分 0

GJA106(中文字符):  
      直接添加select(1)是成功的。事件包(import     java.awt.event.*;)也包进去了亚,还是出错。我用的是jdk1.3.1_02编译的  
  源代码给贴上把:  
  ---------------------------------------------------------------  
  import   java.awt.*;  
  import   java.awt.event.*;    
     
  public   class   order   extends   java.applet.Applet  
    {  
        private   double   SubTotalOne=0.0;  
        private   double   Total=0.0;  
         
        private   double   multiplierSmall=0.5;  
        private   double   multiplierMedium=1.0;  
        private   double   multiplierLarge=1.5;  
        private   double   multiplierJumbo=2.25;  
     
        private   double   ProdOneBaseValue=1.0;  
        private   double   ProdTwoBaseValue=1.33;  
        private   double   ProdThreeBaseValue=1.75;  
        private   double   ProdFourBaseValue=8.75;  
   
        private   Button   SubmitButton;  
        private   Button   ClearButton;  
        private   Button   QuitButton;  
        private   Checkbox   ReapeatCustCheckBox;  
        private   Checkbox   MailBox;  
        private   Checkbox   EmailBox;  
        private   Checkbox   PhoneBox;  
        private   List   ProductList;  
        private   Choice   SizeChoice;  
        private   Scrollbar   OrderAmountSlider;  
         
        private   Label   SubTotalLabel=new   Label("$0.0");  
        private   Label   TotalLabel=new   Label("$0.0");  
        private   Label   AmountLabel=new   Label("$0.0");  
        private   Label   PricePerItemLabel=new   Label("$0.0");      
         
        private   TextField   NameEntryField=new   TextField(25);  
        private   TextField   ZipEntryField=new   TextField(5);  
        private   TextField   StreetEntryField=new   TextField(25);  
        private   TextField   CityEntryField=new   TextField(25);  
         
        private   TextArea   CommentTextArea=new   TextArea(4,25);  
                     
        public   void   init()  
        {  
              Button   SubmitButton=new   Button("Submit");  
              add(SubmitButton);  
               
              Button   ClearButton=new   Button("Clear");  
              add(ClearButton);  
               
              Button   QuitButton=new   Button("Quit");  
              add(QuitButton);  
               
              Checkbox   RepeatCustCheckBox=new   Checkbox("Repeat   Customer?");  
              add(RepeatCustCheckBox);  
               
              add(new   Label("How   would   you   like   to   be   contacted?"));  
               
              CheckboxGroup   ContactMethodGroup;  
              ContactMethodGroup=new   CheckboxGroup();  
               
              Checkbox   EmailBox=new   Checkbox("Email",ContactMethodGroup,true);  
              Checkbox   PhoneBox=new   Checkbox("Phone",ContactMethodGroup,false);  
              Checkbox   MailBox=new   Checkbox("usMail",ContactMethodGroup,false);  
               
              add(EmailBox);  
              add(PhoneBox);  
              add(MailBox);  
               
              add(new   Label("Products"));  
               
              List   ProductList=new   List(4,false);  
              ProductList.addItem("Oscar");  
              ProductList.addItem("Lionhead");  
              ProductList.addItem("Jack   Dempsey");  
              ProductList.addItem("Angelfish");  
              ProductList.select(1);  
   
              add(ProductList);  
               
              add(new   Label("Size:"));  
   
              Choice   SizeChoice=new   Choice();  
              SizeChoice.addItem("Jumbo");  
              SizeChoice.addItem("Large");  
              SizeChoice.addItem("Medium");  
              SizeChoice.addItem("Small");  
               
              add(SizeChoice);  
               
              add(new   Label("Amount:"));  
               
              Scrollbar   OrderAmountSlider=new   Scrollbar(Scrollbar.VERTICAL,0,0,0,144);  
              add(OrderAmountSlider);  
               
              add(AmountLabel);  
              add(new   Label("Subtotal:"));  
              add(SubTotalLabel);  
               
              add(new   Label("Total:"));  
              add(TotalLabel);  
               
              add(new   Label("Your   information:"));  
              add(new   Label("Name:"));  
              add(NameEntryField);  
              add(new   Label("Street:"));  
              add(StreetEntryField);  
              add(new   Label("City:"));  
              add(CityEntryField);  
              add(new   Label("Zip:"));  
              add(ZipEntryField);  
              add(new   Label("Comments:"));  
              add(CommentTextArea);  
               
              //resetValues();  
          }  
           
          public   void   resetValues(){  
              SubTotalLabel.setText("$0.0");  
              TotalLabel.setText("$0.0");  
              AmountLabel.setText("$0.0");  
              PricePerItemLabel.setText("$0.0");  
               
              ProductList.select(0);  
              SizeChoice.select(0);  
              OrderAmountSlider.setValue(0);  
               
              NameEntryField.setText("");  
              StreetEntryField.setText("");  
              CityEntryField.setText("");  
              ZipEntryField.setText("");  
          }  
           
          public   boolean   handleEvent(Event   InEvent)  
          {  
              if(InEvent.id==Event.SCROLL_LINE_UP||InEvent.id==Event.SCROLL_LINE_DOWN){    
                    updateValues();  
              }else      
              if(InEvent.target==ProductList){  
                    updateValues();  
              }else  
              if(InEvent.target==ClearButton){  
                    resetValues();  
              }else  
              if(InEvent.target==QuitButton){  
                        //Alabel.setText("Quit   Button");  
              }else  
              if(InEvent.target==SubmitButton){  
                        //Alabel.setText("Submit   Button");  
              }              
              return   super.handleEvent(InEvent);  
          }  
           
          public   boolean   action(Event   InEvent,Object   SomeObject){  
            if(InEvent.target==SizeChoice){  
                  updateValues();  
                  return   true;  
            }else  
            if(InEvent.target==NameEntryField){  
                  return   true;  
            }else  
              return   false;  
          }      
   
          private   void   updateValues(){  
                int   WhichChoice=SizeChoice.getSelectedIndex();  
                int   AmountSelected=OrderAmountSlider.getValue();  
                int   WhichProduct=ProductList.getSelectedIndex();  
                 
                double   CurrentBasePrice=0.0;  
                double   CurrentModifier=0.0;  
                 
                switch(WhichProduct){  
                        case   0:  
                              CurrentBasePrice=ProdOneBaseValue;  
                              break;  
                        case   1:  
                              CurrentBasePrice=ProdTwoBaseValue;  
                              break;  
                        case   2:  
                              CurrentBasePrice=ProdThreeBaseValue;  
                              break;  
                        case   3:  
                              CurrentBasePrice=ProdFourBaseValue;  
                              break;        
                        }  
                         
              switch(WhichChoice){  
                        case   3:  
                              CurrentModifier=multiplierSmall;  
                              break;                  
                        case   2:  
                              CurrentModifier=multiplierMedium;  
                              break;                  
                        case   1:  
                              CurrentModifier=multiplierLarge;  
                              break;                  
                        case   0:  
                              CurrentModifier=multiplierJumbo;  
                              break;                  
                        }  
                         
              AmountLabel.setText(Integer.toString(AmountSelected)+"");  
              double   PricePerItem=(CurrentBasePrice   *   CurrentModifier);  
              PricePerItemLabel.setText(Double.toString(PricePerItem)+"");  
              double   SubTotal=(CurrentBasePrice+CurrentModifier*AmountSelected);  
              SubTotalLabel.setText(Double.toString(SubTotal)+"");  
                         
              TotalLabel.setText(SubTotalLabel.getText());    
         
          }  
    }  
  --------------------------------------------------------------------  
       
   
   
  Top

10 楼GJA106(中文字符)回复于 2002-03-01 14:54:59 得分 0

在我这儿运行没有出现什么异常,而且ProductList也成功自动指到第二项,applet中各个控件也可以正常操作。Top

11 楼zhanchifeixiang(展翅飞翔)回复于 2002-03-01 14:57:55 得分 0

对了,忘记说了:我在编译源文件时,总是提示  
  Note:   xxx.java   uses   or   overrides   a   deprecated   API.  
  Note:Recompile   with   -deprecation   for   detailsTop

12 楼zhanchifeixiang(展翅飞翔)回复于 2002-03-01 15:15:10 得分 0

GJA106(中文字符):  
      哦,怪了。那么你运行时,那么组件能够正常使用吗?尤其是scroll,我这边一滚动就出上述错误。  
      是不是我的环境有问题????????????  
      我安装的是jdk1.3.1_02,其他什么都设好了。是类包吗?Top

13 楼zhanchifeixiang(展翅飞翔)回复于 2002-03-01 15:35:55 得分 0

我估计是API的问题,是我的不全,还是其他原因呢?  
  请求帮助!!!!!!!!!!!!!!Top

14 楼GJA106(中文字符)回复于 2002-03-01 15:53:48 得分 0

Note:     xxx.java     uses     or     overrides     a     deprecated     API.  
  Note:Recompile     with     -deprecation     for     details  
  是用了过时的api对当前程序没有影响。  
  List的addItem已经不用,用add。  
  你可以javac   -deprecation   e:\\order.java来看你用了多少个过时的api。Top

15 楼zhanchifeixiang(展翅飞翔)回复于 2002-03-01 16:00:57 得分 0

那么,哥们,我能够更新我的API吗?到那里下载?Top

16 楼GJA106(中文字符)回复于 2002-03-01 16:04:36 得分 0

在第几行出现的null     pointer     exceptionTop

17 楼GJA106(中文字符)回复于 2002-03-01 16:12:02 得分 0

在第几行出现的null     pointer     exception。  
  不用下载api,你用当前包新的api代替就行了。因为在当前包中有新的api,所以系统才提示你就用新的api代替旧的api。  
  如果上面所说的addItem已经不用,用add。你看一下addItem是不是已经用横线划掉了。  
  Top

18 楼zhanchifeixiang(展翅飞翔)回复于 2002-03-01 17:37:42 得分 0

知道了,谢谢了Top

19 楼rpw(rpw)回复于 2002-03-01 23:16:47 得分 10

我看是你的程序错了,你已经声明了一个私有的全局变量ProductList:  
                              private     List     ProductList;  
                   
  然后在init方法理由声明了一个同名的ProductList对象:  
                              List     ProductList=new     List(4,false);  
                              ProductList.addItem("Oscar");  
                              ProductList.addItem("Lionhead");  
                              ProductList.addItem("Jack     Dempsey");  
                              ProductList.addItem("Angelfish");  
                              ProductList.select(1);  
                              add(ProductList);  
  那么当init方法结束后,Applet的面板上应该有一个List对象,就是你看到的那个,但这个对象不是你声明的私有变量ProductList,   这时这个ProductList应该是null,那么在以后的其他方法中如果用到这个变量就会抛出空指针异常。  
   
  (我没有实际运行你的程序,也许会有不准确的地方)Top

20 楼zhanchifeixiang(展翅飞翔)回复于 2002-03-04 10:24:45 得分 0

rpw(rpw)兄说得很正确,按照他说得我重新改了一下程序,运行完全正确。看来一些东西不能随便添加的。  
  ------------------------------------  
  谢谢各位的帮助,谢谢!Top

相关问题

  • Java 入门遇到困难
  • 初学Java遇到难题,求救
  • 刚学java 遇到的问提!!
  • 初学JAVA遇到的问题
  • 初学java applet遇到的问题
  • Java生成Exe时遇到问题
  • 我在学JAVA的第二天遇到的问题
  • 用Java解析xml时,遇到了一个这样的问题!
  • 小弟刚开始学JAVA,遇到了难题,请教:
  • 用java写的ftp下载程序中遇到的问题

关键词

  • api
  • productlist
  • additem
  • inevent
  • angelfish
  • lionhead
  • settext
  • deprecation
  • 变量
  • oscar

得分解答快速导航

  • 帖主:zhanchifeixiang
  • GJA106
  • peacock_king
  • coldjava
  • rpw

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo