0

テーブル列のデータを表示するコンボボックスがあります。

SQL テーブルには 2 つの列が含まれています: name - etat_syn

したがって、コンボボックスには name のデータが表示されます。

    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 のアクション リスナーで行いたい場合は、 を使用し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.
         }
       }
  });
于 2013-06-20T10:12:22.730 に答える