12
返回列表 发新帖
楼主: misscai

请教一个JComboBox的问题

[复制链接]
求职 : 系统架构师
论坛徽章:
184
现任管理团队成员
日期:2011-05-07 01:45:082015年新春福章
日期:2015-03-06 11:57:31懒羊羊
日期:2015-03-04 14:48:16马上有车
日期:2015-02-03 15:49:36马上加薪
日期:2014-11-14 21:57:36itpub13周年纪念徽章
日期:2014-09-27 21:15:55马上有钱
日期:2014-06-16 15:55:42马上有房
日期:2014-06-16 15:55:42问答徽章
日期:2014-04-19 09:26:09马上有房
日期:2014-04-01 21:27:12
11#
发表于 2008-4-8 14:39 | 只看该作者
((Item)comboBox.getselectedItem()) .getValue();
你原始的程序是这样的么,你贴上徕的程序能编译通过?
打包上传你的程序

使用道具 举报

回复
论坛徽章:
2
生肖徽章2007版:龙
日期:2008-12-29 16:11:46CTO参与奖
日期:2009-02-12 11:45:48
12#
 楼主| 发表于 2008-4-9 19:35 | 只看该作者
我的代码如下,请各位指教:
自定义的item类:

  1. class Item extends Object{   
  2.          private   String   text;   
  3.          private   int   value;   
  4.    
  5.   public   Item()   
  6.   {   
  7.           this.text   =   null;   
  8.           this.value   =   0;   
  9.   }   
  10.    
  11.   public   Item(String   text)   
  12.   {   
  13.           this.text   =   text;   
  14.           this.value   =   0;   
  15.   }   
  16.    
  17.   public   Item(int   value,String   text)   
  18.   {   
  19.           this.text   =   text;   
  20.           this.value   =   value;   
  21.   }   
  22.             
  23.   public   void   setValue(int  value)   
  24.   {   
  25.           this.value   =   value;   
  26.   }   
  27.   
  28.   public   void   setText(String   text)   
  29.   {   
  30.           this.text   =   text;   
  31.   }   
  32.    
  33.   public   int   getValue()   
  34.   {   
  35.           return   this.value;   
  36.           
  37.   }   

  38.   public   String   getText()   
  39.   {   
  40.           return   this.text;   
  41.   }   
  42. }   
复制代码


通过继承JComboBox自定义的JDBComboBox类
  1. import java.sql.ResultSet;
  2. import java.sql.SQLException;

  3. import javax.swing.JComboBox;
  4. import javax.swing.JOptionPane;


  5. public class JDBComboBox extends JComboBox{
  6.        
  7.         private String SqlString;
  8.         private ResultSet rs;
  9.         private Item Item;       

  10.        
  11.         public JDBComboBox(){
  12.                 super();
  13.         }
  14.        
  15.         //重写addItem
  16.         public void addItems(String SqlStr){
  17.                 this.removeAllItems();
  18.                 SqlString = SqlStr;
  19.                 Lib DBLib = new Lib();
  20.                 ResultSet rs;
  21.                 rs = DBLib.getResultSet(SqlStr);
  22.                 try{
  23.                         while(rs.next()){
  24.                         Item = new Item(rs.getInt(1),rs.getString(2));
  25.                                                 /**问题出在这里,加入的是一个String类型,而不是自定义的Item类型
  26.                 但如果用this.addItem(Item)方法,则显示在JDBComboBox中的是乱码*/                        this.addItem(Item.getText());
  27.                         this.Item.setValue(rs.getInt(1));
  28.                         this.Item.setText(rs.getString(2));
  29.                         }
  30.                 }catch(SQLException e){
  31.                         JOptionPane.showMessageDialog(this, e.getMessage(),"错误",JOptionPane.ERROR_MESSAGE);
  32.                 }
  33.         }
  34.                         public String getText(){
  35.                 String Text = ((Item)this.getSelectedItem()).getText();
  36.                 return Text;
  37.         }
  38.        
  39.         public int getvalue(){
  40.                 int value  = ((Item)this.getSelectedItem()).getValue();
  41.                 return value;
  42.         }
  43. }
复制代码


下面是主程序的调用语句:
JDBComboBox CBNodeName = new JDBComboBox();
int i = ((Item)CBNodeName.getSelectedItem()).getValue();

[ 本帖最后由 misscai 于 2008-4-9 19:37 编辑 ]

使用道具 举报

回复
论坛徽章:
0
13#
发表于 2009-6-1 14:29 | 只看该作者
问题在这句:this.addItem(Item.getText());

问题原因是因为强制类型转换时,将String型转换为Item,这是错误。而String的产生就是因为上面一句产生的。
所以,真确的做法是删除这句.
代码片段:
while(rs.next()){
                Item = new Item(rs.getInt(1),rs.getString(2));
                this.addItem(Item);
            }

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表