在jCombobox java swing中测试一行

时间:2013-06-20 09:47:16

标签: java mysql

我有一个组合框,我从表格列显示数据。

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”的索引进行测试,该列对应于列名的选定行 我不知道是否有可能

1 个答案:

答案 0 :(得分: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的动作侦听器中,则可以使用Map存储值,然后可以将其用于比较。您的代码将更改如下:

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