获取从单选按钮到组合框的数据搜索

get data searching from radiobutton to combobox

我想搜索一个项目,但我为单选按钮和组合框什么都不显示而苦恼。如果您想显示组合框,请务必选择单选按钮。我混淆了我必须为单选按钮输入什么代码。你能帮帮我吗?

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) {

    }
}

来自数据库的鳄梨卷

类别和类型数据库

现在,

我会创建两个事件,一个在单选框 "Food" 上,另一个在单选框 "Drink" 上。我想,您在一个按钮组中有两个单选框。

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");

} 

现在的结果是,当您单击单选框 "Food" 时,食物项会出现在组合框中,如果您单击单选框 "Drink",则饮料项会出现在组合框中。

所以第二次尝试,使用这段代码应该可以工作,它首先检查 menu_typ,然后应用程序将在 "Food" 和 "Drink" 之间做出决定。最后,应用程序将 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"));

希望对你有所帮助!

为了填充您的 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

你必须这样写:

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);
}

所以不要在意这个错误!