String []str1={"30","31","32","33","34","35"};  JComboBox comb1=new JComboBox(str1);  int i1 = (Integer)comb1.getItemAt(comb1.getSelectedIndex());//这句为何不对?应该怎么写?  int i1 = (Integer)comb1.getSelectedItem();//这句为何不对?应该怎么写?  都是编译通过,但运行时有错。  错误提示:
--------------------配置:            <--------------------
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer
    at NursePb$1.actionPerformed(NursePb.java:66)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
    at java.awt.Component.processMouseEvent(Component.java:6041)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
    at java.awt.Component.processEvent(Component.java:5806)
    at java.awt.Container.processEvent(Container.java:2058)
    at java.awt.Component.dispatchEventImpl(Component.java:4413)
    at java.awt.Container.dispatchEventImpl(Container.java:2116)
    at java.awt.Component.dispatchEvent(Component.java:4243)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
    at java.awt.Container.dispatchEventImpl(Container.java:2102)
    at java.awt.Window.dispatchEventImpl(Window.java:2440)
    at java.awt.Component.dispatchEvent(Component.java:4243)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)

解决方案 »

  1.   

    Integer.parseInt(comb1.getItemAt(comb1.getSelectedIndex()));
    Integer.parseInt(comb1.getSelectedItem());
      

  2.   

    这是类型转换的问题。
    你当初添加的全是String,取值时却当成Integer操作了,所以会出现异常。两种解决方案。第一种是楼上介绍的方法,有点小错,更正如下:
      String s1 = comb1.getItemAt( comb1.getSelectedIndex() ).toString();
      int i1 = Integer.parseInt( s1 );  String s2 = comb1.getSelectedItem().toString();
      int i2 = Integer.parseInt( s2 );第二种是添加时就用Integer,代码如下:
      Integer []data ={ 30, 31, 32, 33, 34, 35 };  JComboBox comb1=new JComboBox( data );  int i1 = (Integer)comb1.getItemAt( comb1.getSelectedIndex() );  int i2 = (Integer)comb1.getSelectedItem();第二段代码用到了自动装拆箱,要在JDK5.0或以上版本中去运行哦。
      

  3.   


    晕……我都提醒了,这里有自动的装/拆箱操作啊。苍天啊!TOT
      

  4.   


    4楼有注意过楼主的代码吗?
    楼主的代码就是用int去接收Integer的值,而且楼主说他的代码通过了编译,所以我知道他的环境是在JDK1.5或以上,所以也就这么写了。
    我可以保证,我给出的代码在JDK1.5或以上的环境中绝对是正确的!
      

  5.   


    晕……一楼的代码貌似有语法错误吧?
    getSelectedItem()应该是返回Object,而Integer.parseInt()方法不可以直接传Object吧?不过看来楼主已经明白怎么做了,呵呵。
      

  6.   

    String str=cb1.getSlectedItem()返回的好像是String
    然后用
    Integer.parseInt(str)
    就可一了。