Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java中添加数据库id作为组合框索引?_Java_Mysql_Swing_Jcombobox - Fatal编程技术网

如何在java中添加数据库id作为组合框索引?

如何在java中添加数据库id作为组合框索引?,java,mysql,swing,jcombobox,Java,Mysql,Swing,Jcombobox,我想从数据库id添加组合框索引 public static void selectCompany(javax.swing.JComboBox cmbCategory ){ cmbCategory.removeAllItems(); String sql="SELECT * FROM company_details"; try{ Connection conn=dbConnection(); PreparedStatement pstmt=

我想从数据库id添加组合框索引

 public static void selectCompany(javax.swing.JComboBox cmbCategory ){
    cmbCategory.removeAllItems();
    String sql="SELECT * FROM company_details";
    try{
        Connection conn=dbConnection();
        PreparedStatement pstmt=conn.prepareStatement(sql);
        ResultSet rs=pstmt.executeQuery(sql);
        while(rs.next()){
            int id=rs.getInt("company_id");
            String category=rs.getString("company_name");
            cmbCategory.addItem(id);
            cmbCategory.addItem(category);
        }
    }catch(Exception e){
        JOptionPane.showMessageDialog(null, e);
    }
}

CMB类别是组合框对象。我想将id显示为组合框索引,组合框列表显示为类别名称。数据库是mysql。

如果您想将公司id设置为
组合框
项目索引,那么我的答案是您不能设置项目索引。如果要同时显示id和类别,请连接id和公司名称

cmbCategory.addItem(id + " " + category);

您可以向组合框中添加对象,而不仅仅是字符串,因此类似这样的操作应该可以做到:

    while(rs.next()){
        int id=rs.getInt("company_id");
        String category=rs.getString("company_name");
        Object[] itemData = new Object[] {id, category};
        cmbCategory.addItem(itemData);
    }
正如Harry Joy指出的,您可以通过使用

您可以稍后将其分配给JComboBox:

cmbCategory.setRenderer(new MyListRenderer());

这样做的明显优点是,ID和类别名称都位于一个对象中,因此当用户在组合框中选择一个项目时,您可以访问该对象的所有属性(ID和名称!).

使用自定义渲染器时,您将无法通过键盘输入项目的第一个字符来访问组合框项目。这是因为combobox模型的搜索使用每个项的toString()方法来首先搜索请求的项。在本例中,数组的toString()实现不是meaningul


另一种解决方案是创建一个自定义对象并覆盖对象的toString()方法,如本例所示:

我想删除所选项目,如果我需要项目的id,我该怎么做
cmbCategory.setRenderer(new MyListRenderer());