【发布时间】:2012-04-03 00:42:06
【问题描述】:
编辑(新):
仍然没有弄清楚如何填充cboxCustomers。过去一两天我一直在努力,但没有运气。
如果有人可以提供帮助:http://pastebin.com/e5wibRYw
我从cats 转到customers,顺便说一句。
我尝试了Mr. Xymon's 方法,但没有正确实施,因为它不起作用。
无论我用来处理人口的任何事件,对于我尝试使用的任何控制/事件,我总是得到NullPointerException。
旧:
有一个JForm。在它上面,有一个组合框。还有一张带猫的桌子 - cats。每只猫都有id和catName。
我想要做的是,当我单击组合框时,将其展开,并用在 cats 表中找到的所有猫 id 填充它。
很喜欢。在下面回答。
不幸的是,我从> 指示的行中收到了许多unreported exception java.sql.SQLException:
private void cboxCatsMouseClicked(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
// create an array list to be filled with cat's ids
ArrayList<String> cats = new ArrayList<String>();
String query = "SELECT id FROM cats ORDER BY id";
>java.sql.PreparedStatement stm = connection.prepareStatement(query);
>ResultSet rs = stm.executeQuery(query);
>while(rs.next()){
>String cat = rs.getString("id");
// add cat's ids tp the array list
cats.add(cat);
}
>rs.close();
// populate the combo box
DefaultComboBoxModel model = new DefaultComboBoxModel(cats.toArray());
cboxCats.setModel(model);
}
旧答案:
我想我修好了。我只需要将所有突出显示的代码行打包成一个大的try-catch 语句,该语句将捕获SQLException。问题是 - 当我展开组合框时,组合框没有填充 id 值。这是为什么?我是否使用了错误的事件?
【问题讨论】:
-
请发布完整的异常文本。此外,您还需要在后台线程中进行任何数据库查询,例如 SwingWorker 对象提供的。
-
关于您的编辑:同样,您应该在后台线程中进行所有数据库查询。你为什么要在 mouseClick 上填充组合框,因为这没有任何意义。查询数据库需要时间,并且可能会影响 Swing 打开组合框的能力。为什么不提前填写组合框?
-
是的。这更有意义。谢谢。
-
回答您的编辑,在构造函数中插入您的代码或创建一个方法来执行任务,然后从您的构造函数中调用它。
标签: java mysql swing netbeans combobox