2014-11-25 3 views
0

나는 MySQL 테이블과 스윙 인터페이스를 디자인했습니다. 첫 번째 콤보 상자 값 (브랜드 이름)을 선택하면 두 콤보 상자를 넣을 수 있고 두 번째 콤보 상자 값 (선택한 브랜드에서는 사용 가능한 항목)은 mysql 쿼리를 통해로드됩니다. 내 코드JComboBox의 MySQL 테이블 값

try{ 
    String url = "jdbc:mysql://localhost:3306/databasename"; 
    String login = "root"; String password = ""; Connection con = DriverManager.getConnection(url, login, password); 
    try{ 
     comboBox1 = new JComboBox(); comboBox1.setEditable(false); 
     comboBox1.addItem("- - -"); 
     Statement stmt1=null; 
     String query1 = "SELECT brand FROM brands"; 
     stmt1 = con.createStatement(); 
     ResultSet rs1 = stmt1.executeQuery(query1); 
     while(rs1.next()) {comboBox1.addItem(rs1.getString(1));} 
     comboBox2 = new JComboBox(); comboBox2.setEditable(false); 
     comboBox1.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent event){ 
       String comboBox1Selected=comboBox1.getSelectedItem().toString(); 
       try{ 
        Statement stmt2=null; 
        String query2 = "SELECT item FROM "+comboBox1Selected+""; 
        stmt2 = con.createStatement(); 
        ResultSet rs2 = stmt2.executeQuery(query2); 
        while(rs2.next()) {comboBox2.addItem(rs2.getString(1));} 
       } 
       catch (SQLException ex1) {JOptionPane.showMessageDialog(null,"Failed to Item-List..!"); ex1.printStackTrace(); return;} 
      } 
     }); 
    } 
    catch (SQLException ex2) {JOptionPane.showMessageDialog(null,"Failed to Brand-List..!"); ex2.printStackTrace(); return;} 
} 
catch (SQLException ex3) {ex3.printStackTrace(); JOptionPane.showMessageDialog(null,"Unable to Connect..!"); return;} 

문제는 콤보 내가 1 콤보 상자에서 다른 선택을 선택하면, 두 번째 콤보 그들이 나타납니다 (이하 "이전의 값을"피하지 않는, 제대로 작동 그겁니다입니다 ...입니다 새로운 값).

어떤 이유 일 수 있습니까? ..? 누구든지 설명 할 수 있니 ..? 미리 감사드립니다.

답변

2

전화 comboBox2.removeAllItems() 여기 while(rs2.next()) {comboBox2.addItem(rs2.getString(1));}

+0

을 새로운 항목을 추가하기 전에 ... 사람이 그것을했다! 감사합니다 StanislavL :) – Maharan