怎么得到JComboBox中所选的值?急急!

yihuicao 2008-10-01 02:32:40
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)
...全文
579 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
clz2008wan 2008-11-27
  • 打赏
  • 举报
回复
String str=cb1.getSlectedItem()返回的好像是String
然后用
Integer.parseInt(str)
就可一了。
accp206 2008-10-01
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 caoyihui1 的回复:]
谢谢大家!一楼的方法已经把问题解决了
[/Quote]

晕……一楼的代码貌似有语法错误吧?
getSelectedItem()应该是返回Object,而Integer.parseInt()方法不可以直接传Object吧?

不过看来楼主已经明白怎么做了,呵呵。
yihuicao 2008-10-01
  • 打赏
  • 举报
回复
谢谢大家!一楼的方法已经把问题解决了
accp206 2008-10-01
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 accp206 的回复:]
引用 4 楼 accp206 的回复:
引用 3 楼 cymyell 的回复:
i1是整数,怎么可能得到后面的赋值。类型不同怎么可能对


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


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

“4楼有注意过楼主的代码吗?”,错了!是“3楼”,唉……
accp206 2008-10-01
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 accp206 的回复:]
引用 3 楼 cymyell 的回复:
i1是整数,怎么可能得到后面的赋值。类型不同怎么可能对


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

4楼有注意过楼主的代码吗?
楼主的代码就是用int去接收Integer的值,而且楼主说他的代码通过了编译,所以我知道他的环境是在JDK1.5或以上,所以也就这么写了。
我可以保证,我给出的代码在JDK1.5或以上的环境中绝对是正确的!
accp206 2008-10-01
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 cymyell 的回复:]
i1是整数,怎么可能得到后面的赋值。类型不同怎么可能对
[/Quote]

晕……我都提醒了,这里有自动的装/拆箱操作啊。苍天啊!TOT
cymyell 2008-10-01
  • 打赏
  • 举报
回复
i1是整数,怎么可能得到后面的赋值。类型不同怎么可能对
accp206 2008-10-01
  • 打赏
  • 举报
回复
这是类型转换的问题。
你当初添加的全是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或以上版本中去运行哦。
horizonlyhw 2008-10-01
  • 打赏
  • 举报
回复
Integer.parseInt(comb1.getItemAt(comb1.getSelectedIndex()));
Integer.parseInt(comb1.getSelectedItem());

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧