java - Java - jComboBox1 上的 ActionEvent 以更新 jComboBox2 - 键盘/鼠标-输入键条件
问题描述
我有两个 jComboBox,(1 和 2)
根据 1 中的选择,它会更新 2。我面临的问题是 2 上的更新是通过数据库查询完成的。因此,如果有人选择第一个组合框并开始输入以选择他们想要的内容,它会在每次按键/更新选择时触发数据库查询。这并不理想。
解决此问题的一种方法是使用 ActionEvent 来测试它是使用鼠标还是键盘选择的。
private void jComboBox1ActionPerformed(java.awt.event.ActionEvent evt) {
if (evt.getModifiers() == 0) {
// Do nothing because keyboard is pressed
} else {
Object item = jComboBox1.getSelectedItem();
try{
// DATABASE CONNECTION HERE
// Load up jComboBox2
jComboBox2.removeAllItems();
while(rs.next())
{
jComboBox2.addItem(rs.getString(1));
}
//Close and catch exceptions etc.
是否可以有条件}else{
才能说
}else if(keyboardpressed(VK_ENTER) or mouseclick) {
原因是用户通常会在第一个组合框中键入选择,然后按回车键进行选择。目前他们必须伸手去拿鼠标来选择。
解决方案
我认为您不应该允许从第一个组合框中进行查询,除非用户选择列出的项目或点击有效文本条目ENTER上的键。您的组合框是否有自动完成功能?甚至可能禁用第二个组合框,直到从第一个组合框做出有效选择
请改用ItemStateChanged事件:
private void jComboBox1ItemStateChanged(java.awt.event.ItemEvent evt) {
// Prevent double selection from event.
if(evt.getStateChange() == ItemEvent.SELECTED) {
System.out.println(jComboBox1.getSelectedItem().toString());
// Or whatever you want to do with the selection.
}
}
推荐阅读
- java - 如何将 HTTP 响应作为字符串转换为数组?
- java - java.lang.NoSuchMethodError:使用詹金斯共享库时,在步骤中找不到这样的 DSL 方法“ci”
- javascript - 如何在使用事件侦听器单击特定 div 时隐藏它?
- javascript - 如何在jquery中使用数据属性隐藏tr
- python - 在python的for循环中合并数据帧
- javascript - 如何通过 Flask 重定向到 Vue-app 的特定页面
- opengl-es - 在 OpenGL ES 中,什么是“外部图像”?为什么我们需要 GL_OES_EGL_image_external?
- r - dplyr 按组计算分数
- javascript - 删除请求导致节点服务器冻结
- python - 服务器进程之间的 Django 状态共享