【发布时间】:2013-03-22 21:33:04
【问题描述】:
我已经创建了一个组合框,其中填满了数据库条目。我目前面临的问题是,当我写“H”时,列表会根据需要填充以“H”开头的所有名称,但会自动选择列表中的第一个名称。如何避免这个问题?
String ch = text.getText();
if (ch.equals("")) {
combo.setVisible(false);
} else {
try {
Class.forName("com.mysql.jdbc.Driver");
Connection connect = DriverManager.getConnection("jdbc:mysql://localhost:3306/userlogin", "root","12345");
Statement st = connect.createStatement();
ResultSet rs = st.executeQuery("SELECT author_name FROM scrpd_authors WHERE author_name LIKE '"+ ch + "%'");
while (rs.next()) {
String name = rs.getString("author_name");
if (name.equals("")) {
searchitems.addItem("");
} else {
searchitems.addItem(rs.getString("author_name"));
searchitems.setVisible(true);
}
}
connect.close();
} catch (Exception ex) {
}
}
请注意,组合框已根据 mysql 查询填充了我想要的所有条目,问题只是选择了第一个条目本身。
【问题讨论】:
-
那么究竟应该选择什么?您可以使用侦听器,然后在填充列表后取消选择第一个条目。
-
确保第一项是空的
String。 -
为什么会出现这个问题?最好的情况是用户已经选择了正确的选项,最坏的情况是他需要向下移动以选择正确的选项,这在您的方法中也必须这样做。
-
另外,让搜索项在循环外可见。
-
在我编写的用于在屏幕上打印所选项目的侦听器中,它最初会打印名字,然后是我单击的名称。
标签: java swing selection jcombobox