从radiobutton到组合框进行数据搜索

时间:2015-05-06 14:46:35

标签: java swing combobox radio-button

我想搜索一个项目,但是我很困惑,单选按钮和组合框没有显示任何内容。如果你想获得节目组合框,请选择单选按钮。我混淆了必须为单选按钮键入的代码。你能救我吗?

private void txtSearchKeyReleased(java.awt.event.KeyEvent evt) {                                      
    // TODO add your handling code here:
    try {
        String menu_name = txtSearch.getText();

        Statement stmt;
        stmt = con.createStatement();
        ResultSet rs = stmt.executeQuery("select * from menu WHERE menu_name like '%" + menu_name + "%' ");

        if (rs.next()) {
            txtMID.setText("" + rs.getString("menu_id"));

            cmbMCat.setSelectedItem("" + rs.getString("menu_cat")); //combo box
            txtMName.setText("" + rs.getString("menu_name"));
            txtMPrice.setText("" + rs.getString("menu_price"));

            //DefaultTableModel model = (DefaultTableModel) tblMenu.getModel();
        //model.addRow(new Object[]{txtMID.getText(), type, cmbMCat.getSelectedItem(), txtMName.getText(), txtMPrice.getText()});
        } 
    }
    catch (SQLException | HeadlessException e) {

    }
}

enter image description here

来自数据库的鳄梨卷 enter image description here

类别和类型数据库

enter image description here

现在,enter image description here

enter image description here

4 个答案:

答案 0 :(得分:2)

你必须这样写:

try{

     for (int i = 0; i < itemCount; i++) {
         combo.removeItemAt(0);
     }


     rs = stmt.executeQuery("select * from menu_cat");

     int i = 0;
     String[] categories = new String[99];

     while(rs.next()){

         categories[i] = rs.getString("menu_cat");            
         i++;            
     }

     i = 0;

     while(!categories[i].equals("")){

          combo.addItem(categories[i]);
         i++;

     }

}catch (Exception e){

     System.out.println("Unimportant error: " + e);
}

所以不要关心这个错误!

答案 1 :(得分:1)

我会创建两个事件,一个在radiobox“Food”上,另一个在radiobox“Drink”上。我想,你在一个buttongroup中有两个radioboxes。

private void radio_foodFocusGained(java.awt.event.FocusEvent evt) {                                       

    int itemCount = combo.getItemCount();

    for (int i = 0; i < itemCount; i++) {
        combo.removeItemAt(0);
    }

    combo.addItem("Food Item 1");
    combo.addItem("Food Item 2");

}                                      

private void radio_drinkFocusGained(java.awt.event.FocusEvent evt) {                                        

    int itemCount = combo.getItemCount();

    for (int i = 0; i < itemCount; i++) {
        combo.removeItemAt(0);
    }

    combo.addItem("Drink Item 1");
    combo.addItem("Drink Item 2");

} 

所以现在结果就是当你点击radiobox“食物”时,食物项目出现在组合框中,如果你点击radiobox“Drink”,那么这些饮品就会出现在组合框中。

enter image description here enter image description here

答案 2 :(得分:1)

所以第二次尝试,使用此代码它应该工作,它首先检查menu_typ并且应用程序将决定&#34; Food&#34;和&#34;喝&#34;。最后,应用程序将ComboBox中的选定项目设置为menu_cat。

    if(rs.getString("menu_type").equals("Food")){

        radio_food.setSelected(true);
        radio_drink.setSelected(false);

    }else if(rs.getString("menu_type").equals("Drink")){

        radio_drink.setSelected(true);
        radio_food.setSelected(false);

    }else{

        System.out.println("No valid menu type");

    }

    combo.setSelectedItem(rs.getString("menu_cat"));

我希望我能帮到你!

答案 3 :(得分:1)

为了填充你的ComboBox,你需要先执行一个新的查询,这个查询会为你提供所有不同的menu_cat。首先,您需要删除ComboBox中的现有条目。

    for (int i = 0; i < itemCount; i++) {
        combo.removeItemAt(0);
    }


    rs = stmt.executeQuery("select * from menu_cat");

    int i = 0;
    String[] categories = new String[99];

    while(rs.next()){

        categories[i] = rs.getString("menu_cat");            
        i++;            
    }

    i = 0;

    while(!categories[i].equals("")){

        combo.addItem(categories[i]);
        i++;

    }

此代码执行以下步骤:

  • 删除ComboBox中的所有条目
  • 执行新查询
  • 将所有值保存在数组中
  • 将数组中的所有项添加到ComboBox