我有一个组合框,我从表格列显示数据。
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”的索引进行测试,该列对应于列名的选定行 我不知道是否有可能
答案 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.
}
}
});