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)
--------------------配置: <--------------------
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)
Integer.parseInt(comb1.getSelectedItem());
你当初添加的全是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或以上版本中去运行哦。
晕……我都提醒了,这里有自动的装/拆箱操作啊。苍天啊!TOT
4楼有注意过楼主的代码吗?
楼主的代码就是用int去接收Integer的值,而且楼主说他的代码通过了编译,所以我知道他的环境是在JDK1.5或以上,所以也就这么写了。
我可以保证,我给出的代码在JDK1.5或以上的环境中绝对是正确的!
晕……一楼的代码貌似有语法错误吧?
getSelectedItem()应该是返回Object,而Integer.parseInt()方法不可以直接传Object吧?不过看来楼主已经明白怎么做了,呵呵。
然后用
Integer.parseInt(str)
就可一了。