使用KeyRelease加载JComboBox

时间:2013-12-06 08:56:56

标签: java netbeans jcombobox keyrelease

这里我的要求是当我在组合框中键入内容时,它应该搜索数据库并获取相关数据。当我键入它时应该修复确切的数据删除不需要的值。这是我的代码..没有发生< / p>

private void ComboItemName() {
    bbb = false;
    txtComboItemName = (JTextField) ComboItemName.getEditor().getEditorComponent();
    txtComboItemName.addKeyListener(new KeyAdapter() {
        public void keyReleased(KeyEvent evt) {
            if (!(evt.getKeyCode() == KeyEvent.VK_DOWN || evt.getKeyCode() == KeyEvent.VK_UP || evt.getKeyCode() == KeyEvent.VK_LEFT || evt.getKeyCode() == KeyEvent.VK_RIGHT || evt.getKeyCode() == KeyEvent.VK_ENTER)) {
                try {
                    S3 = txtComboItemName.getText();
                    ResultSet rst = new JDBC.DB().getData("select * from item_reg where id like '%" + S3 + "'");
                    boolean b = rst.next();
                    boolean bb = false;
                    if (b) {
                        ComboItemName.removeAllItems();
                        bb = true;
                    }
                    while (b) {
                        if (rst.getString(1).startsWith(S3)) {
                            ComboItemName.addItem(rst.getString(1));
                        }
                        b = rst.next();
                    }
                    ComboItemName.setSelectedItem(S3);
                    txtComboItemName.setCaretPosition((ComboItemName.getSelectedItem() + "").length());
                    ComboItemName.showPopup();
                    int i = ComboItemName.getItemCount();

                    if (i > ComboItemName.getMaximumRowCount()) {
                        ComboItemName.setMaximumRowCount(15);
                    } else {
                        ComboItemName.setMaximumRowCount(i);
                    }
                    bbb = true;
                } catch (Exception ex) {
                    System.out.println(ex);
                }

            } else if (evt.getKeyCode() == KeyEvent.VK_ENTER && bbb == true) {

                boolean bIT = false;

                String Sr123 = (String) ComboItemName.getSelectedItem();
                try {
                    ResultSet Rst23 = new JDBC.DB().getData("select id from item_reg");
                    while (Rst23.next()) {
                        if (Sr123.equals(Rst23.getString(1))) {
                            bIT = true;
                            break;
                        } else {
                            bIT = false;
                        }
                    }
                    bbb = false;
                } catch (Exception ex) {
                    System.out.println(ex);
                }
            }
        }
    });
}

1 个答案:

答案 0 :(得分:0)

是这个 ResultSet rst = new JDBC.DB().getData("select * from item_reg where id like '%" + S3 + "'");查询工作正常?

检查b的值。

boolean b = rst.next();

可能是您的查询无效。