我有一个用户表(tbl_users)和一个用户角色表(tbl_list_user_roles)。在tbl_users中,我为分配给用户的角色存储了一个ID(Role_ID)。在tbl_list_user_roles中,我有几个角色来填充组合框(后面的代码片段):
st = conn.createStatement();
String QueryString3 = "SELECT ID, RoleName FROM tbl_list_user_roles WHERE Active = true ORDER BY RoleRank DESC";
ResultSet rs3 = st.executeQuery(QueryString3);
while (rs3.next()) {
cbo_Role.addItem(new TypeEntry_Role(rs3.getInt(1), rs3.getString(2)));
}
rs3.close();
查询结果看起来像这样(抱歉,不能让列整齐排列):
ID RoleRank RoleName Active
7 100 None true
1 99 Viewer true
4 30 Reviewer true
3 20 Assigner true
2 10 Analyst true
5 -50 Admin true
6 -99 Developer true
以下是相关课程:
class TypeEntry_Role {
private int value;
private String label;
public TypeEntry_Role(int ID, String RoleName) {
this.value = ID;
this.label = RoleName;
}
public int getValue() {
return value;
}
public String toString() {
return label;
}
}
这里是我尝试用于在组合框中为tbl_Users(selectedRow的第二列)中的Role_ID设置所选行的代码:
cbo_Role.setSelectedIndex((int) table_Users.getValueAt(selectedRow, 2) -1 );
问题是.getValueAt从tbl_users返回 Role_ID 。我需要的setSelectedIndex是Role_ID的索引。例如,如果Role_ID是4(Reviewer),我需要将SelectedIndex设置为2.显示的代码将SelectedIndex设置为4,显示" Analyst"。
所以,我认为我需要一种方法来获取selectedRow的索引而不是ValueAt。我想我可以遍历组合框的内容并找到具有与ID(隐藏)列匹配的Role_ID的条目,然后使用该索引。但是,我不知道如何访问组合框的 ID (值)。我尝试这样做会返回 RoleName (标签)。
也许有更直接的方法。如果是这样,那将是有利的。
我是来自MS-Access的相对较新的Java。非常感谢帮助。
答案 0 :(得分:2)
你会遍历组合框中的条目,并且(这是我认为你缺少的:)在它们上面调用getValue()
来获取id值(假设id是保持在此字段中),然后突出显示包含正确id值的单元格。
你的答案"表明您在JComboBox上调用了getValue()
,这些内容确实没有意义。另一方面,你的TypeEntry_Role 有一个getValue()
方法,这当然是你应该使用的方法!例如:
for (int i = 0; i < cbo_Role.getItemCount(); i++) {
System.out.println(i + " item: " + cbo_Role.getItemAt(i).getValue());
}