2011-05-25 97 views
1

我一直在與一個項目,需要我使用多個jcombobox。我確實嘗試鏈接​​三個jcombobox,但未能顯示所有必要的下拉列表。問題瓦特/多個jcombobox

在我的一個組合框中,我有銀行列表(銀行1,銀行2),另一個是所選銀行的所有分行清單(銀行1(分行1-1,分行1-2),銀行2 (branch2-1,branch2-2)),最後一個是已經選擇的所有特定分支的賬號。每個分行都有多個賬戶。

我沒有問題,使用2個組合框,所有分支都顯示爲已選擇的特定銀行,但是,當我添加第三個組合框時,只有一個分支正在從我的數據庫中查詢。恩。如果我選擇Bank1,則只有「branch1」在列表中,並且如果Bank2只有分支2-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; 
} 
+0

請縮進您的代碼,很難像這樣讀取它。 – MByD 2011-05-25 08:17:21

+1

@Jet Beray在這個論壇上歡迎 – mKorbel 2011-05-25 08:20:45

+0

10s我已經縮進了代碼,感謝NetBeans先生。該編輯正在等待批准。 – Boro 2011-05-25 08:54:59

回答

1

問題解決。我爲所有ResultSet使用了一個單變量。嘖!感謝您回覆我的帖子。