我想要的是当我单击主题组合框 Batch Name:
时组合框应根据主题选择而变化。我尝试了这个但没有任何反应。此代码位于 Subject Name:
组合框操作执行的功能。
private void combosubjActionPerformed(java.awt.event.ActionEvent evt) {
String sub= evt.getSource().toString();
try {
btchcombo.removeAllItems();
Connection conn = getConnection();
PreparedStatement prpd = conn.prepareStatement("SELECT batch FROM BATCHLIST where subject=?");
prpd.setString(1,sub);
ResultSet rs = prpd.executeQuery();
while (rs.next()) {
String pat = rs.getString("BATCH");
btchcombo.addItem(pat);
}
} catch (Exception e) {
e.printStackTrace();
JOptionPane.showMessageDialog(null, e);
}
}
最佳答案
事情没那么简单。仅调用 addItem()
根本不足以更新组合框数据;以及该事物的 UI 表示。
您想查看此question此处了解完成该操作所需的详细信息。
但除此之外:您确实应该退后一步,阅读一下如何正确构建连接到数据库的 UI 应用程序。 ActionListener 直接从数据库中提取数据是绝对错误的!
首先,这违反了分层的任何想法。您可以在 UI 和数据库之间添加抽象。请参阅here或者 there供进一步阅读。
然后:actionPerformed()
方法由所谓的事件调度程序线程调用。该线程用于调度事件。您不应该“占用它”来调用数据库。你知道,如果数据库连接用完怎么办?那个 DB 代码……在那里呆了一分钟,等待轮到它?这将导致您的 UI 卡住,因为负责保持 UI 运行的线程...坐在那里等待您的数据库。
长话短说:看来你给自己带来了过重的负担。您应该退一步,花相当多的时间学习这些方面。否则,你的工作结果将会有问题,并且没有人会愿意使用它。
关于java - 如何使用另一个组合框控制一个组合框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43908538/