有多个jcombobox的问题

时间:2011-05-25 08:04:59

标签: java swing jcombobox

我一直在处理一个需要我使用多个jcombobox的项目。我确实试图链接三个jcombobox但未能显示所有必要的下拉列表。

在我的一个组合框中,我有银行列表(Bank1,Bank2),另一个是已选择的特定银行中所有分行的列表(Bank1(branch1-1,branch1-2),Bank2( branch2-1,branch2-2)),最后一个是已选择的所有特定分支的帐户#。每个分支都有多个帐户。

我使用2个组合框没有问题,所有分支都显示为已选择的特定Bank,但是,当我添加第三个组合框即帐号#时,我的数据库中只查询了一个分支。恩。如果我选择Bank1,那么“branch1”将在列表中,如果Bank2只有branch2-1也在列表中,但是特定分支的帐号#在下拉列表中。

private void populateSavingsAccountComboBox() {
    accountNo.removeAllItems();
    bankBranch.removeAllItems();
    selectBank();
    bankName.addActionListener(new ActionListener() {

        public void actionPerformed(ActionEvent e) {
            String bank = bankName.getSelectedItem() == null ?
                "" : bankName.getSelectedItem().toString();
            selectBranch(bank);
        }
    });

    bankBranch.addItemListener(new ItemListener() {

        public void itemStateChanged(ItemEvent e) {
            Object source = e.getSource();
            JComboBox target = (JComboBox) e.getSource();
            String branch = target.getSelectedItem() == null ?
                "" : target.getSelectedItem().toString();
            if (e.getStateChange() == ItemEvent.SELECTED) {
                selectAccountNo(bankName.getSelectedItem().toString(), branch);
            }
        }
    });
}

private void selectBank() {
    List bankList = new ArrayList();
    try {
        stmt = conn.createStatement();
        rs = stmt.executeQuery(" SELECT bankName FROM bank_tbl ");
        bankName.removeAllItems();
        while (rs.next()) {
            String bank = rs.getString("bankName");
            bankList.add(bank);
            Object bankElement = bankList.get(bankList.size() - 1);
            bankName.addItem(bankElement);
        }
    } catch (SQLException ex) {
        Logger.getLogger(addSavings.class.getName()).log(Level.SEVERE, null, ex);
    }
}

private String selectBranch(String bank) {
    try {
        List branchList = new ArrayList();
        rs = stmt.executeQuery(" SELECT branch FROM bank_branch_tbl WHERE "
            + " bankName = '" + bank + "' ");
        bankBranch.removeAllItems();
        while (rs.next()) {
            branchList.add(rs.getString("branch"));
            Object branchElement = branchList.get(branchList.size() - 1);
            bankBranch.addItem(branchElement);
        }
    } catch (SQLException ex) {
        Logger.getLogger(addContact.class.getName()).log(Level.SEVERE, null, ex);
    }
    return bank;
}

private String selectAccountNo(String bank, String branch) {
    List accountNoList = new ArrayList();
    try {
        rs = stmt.executeQuery(" SELECT accountNo FROM account_no_tbl WHERE "
            + " bankName = '" + bank + "' AND "
            + " branch = '" + branch + "' ");
        accountNo.removeAllItems();
        while (rs.next()) {
            accountNoList.add(rs.getString("accountNo"));
            Object accountNoElement = accountNoList.get(accountNoList.size() - 1);
            accountNo.addItem(accountNoElement);
        }
    } catch (SQLException ex) {
        Logger.getLogger(addSavings.class.getName()).log(Level.SEVERE, null, ex);
    }
    return branch;
}

1 个答案:

答案 0 :(得分:1)

问题解决了。我正在为所有ResultSet使用单个变量。啧!谢谢你回复我的帖子。