0

我有一个组合框,可以在其中显示表格列中的数据。

sql 表包含 2 列:name - etat_syn

所以组合框显示名称的数据:

    jComboBox3.removeAllItems();
    try{
           conn = DriverManager.getConnection("jdbc:mysql://localhost/etat", "root", "123456"); 
           String sql = "SELECT * FROM pop;";         
           PreparedStatement prest = conn.prepareStatement(sql);
           ResultSet res=prest.executeQuery();
           while(res.next()){ 
                 if(Integer.parseInt(res.getString("etat_syn"))==0){
                       jComboBox3.addItem(res.getString("name")) ;
                 }
           }      
    } catch (Exception e) {
            System.out.println("ERROR :"+e.getMessage());
    } 

但我想对列“etat_syn”的索引进行测试,它对应于列名的选定行
我不知道它是否可能

4

1 回答 1

0

您的代码似乎有点混乱。您说您想根据用户在 JComboBox 中选择的内容做不同的事情,但您添加的只是 etat_syn 为 0 的行的名称。

  if(Integer.parseInt(res.getString("etat_syn"))==0){
                   jComboBox3.addItem(res.getString("name")) ;
  }

因此,在您的情况下,无论您选择哪个项目,该项目的 etat_syn 值将始终为零。

我想(虽然我猜,你需要类似下面的东西:

while(res.next()){ 
             jComboBox3.addItem(res.getString("name")) ; 
             jComboBox3.setActionCommand(res.getString("etat_syn"));
}  

然后在 的动作监听器中jComboBox3,您可以这样做:

 jComboBox3.addActionListener(new ActionListener() {
       public void actionPerformed(ActionEvent actionEvent) {
         String actionCommand = actionEvent.getActionCommand();
         if("0".equals(actionCommand)) {
          //Do this
         } else {
           //Do something else.
         }
       }
 });

如果您希望处理在 Button 的操作侦听器中,则可以使用 aMap来存储值,然后可以将其用于比较。您的代码将更改如下:

Map<String, Integer> itemsMap = new HashMap<String, Integer>(); //Declare this as a member of the class.

while(res.next()){ 
             String name = res.getString("name");
             jComboBox3.addItem() ; 
             int value = Integer.parseInt(res.getString("etat_syn"));
             itemsMap.put(name, value);
} 

按钮的动作监听器如下:

 yourButton.addActionListener(new ActionListener() {
       public void actionPerformed(ActionEvent actionEvent) {
         String selectedItem = (String)jComboBox3.getSelectedItem();
         int value = itemsMap.get(selectedItem);
         if(value == 0) {
          //Do this
         } else {
           //Do something else.
         }
       }
  });
于 2013-06-20T10:12:22.730 回答