2013-08-05 10 views
1

DefaultComboBoxModel과 사용자 지정 항목을 사용하여 콤보 상자를 채우고 있습니다. 각 항목에는 ID와 이름이 포함됩니다. 나는 테이블을 반복하며 선택에 따라 콤보 상자에서 선택된 요소를 제거하고 싶습니다. 제거하려는 항목의 경우 반복되는 표의 ID와 이름이 있습니다. 나는 객체를 가져 오는 removeItem을 사용하여 시도했다. 내 사용자 지정 Item 생성자에 ID와 Name을 전달하지만 작동하지 않는 것 같습니다. 아무도 내가 여기에없는 것을 말해 줄 수 있습니까? 채우기 콤보에 대한Jcombobox에서 특정 항목 제거

코드 : 사용자 정의 항목에 대한

Vector<Object> companyList = new Vector<Object>(); 
     while(rs.next()){ 
      companyList.addElement(new Item(rs.getInt(1),rs.getString(2))); 
     } 
DefaultComboBoxModel cmod = new DefaultComboBoxModel(companyList); 
     companyName.setModel(cmod); 

코드 :

class Item 
{ 
    private int id; 
    private String name; 

    public Item(int id, String name) 
    { 
     this.id = id; 
     this.name = name; 
    } 

    public int getId() 
    { 
     return id; 
    } 

    public String getName() 
    { 
     return name; 
    } 

    public String toString() 
    { 
     return name; 
    } 
} 

코드 항목을 제거 (이 예를 들어 하드 코딩) :

companyName.removeItem(new Item(50002,"ALLIED WASTE SYSTEMS")); 

removeItem 말한다 Object가 필요하므로 왜 이것이 작동하지 않을지 확신하지 못합니다. 어떤 도움을 주시면 감사하겠습니다!

+0

더 나은 도움을 얻으려면'companyName.' 대신'companyList.removeItem (...'? –

+0

대신 [SSCCE] (http://sscce.org/), 짧고, 실행 가능한, 컴파일 가능한 JFrame과'JCom ' boBox '클래스의'Item'에 기반을 두었습니다. (http://stackoverflow.com/a/14079963/714968), 그렇지 않으면'public void removeElementAt (int index) {' – mKorbel

답변

5

클래스 Itemequals()hashCode()을 대체하지 않으므로 "동일한"항목이 동일하게 비교됩니다. 컬렉션 클래스에서 요구하는 계약을 충족하려면이 두 가지 메서드를 구현해야합니다.

가 그 임시 목록으로 콤보 모델을 변경하려면 제거 할 그 요소가 포함되지 않습니다 임시 목록을 사용할 수 있습니다

+0

을 찾아보십시오. 그것은 많은 의미가 있습니다. Object 클래스를 이해하는 데 더 많은 시간이 필요하다고 생각합니다. 이 질문에 실수를 저지른 다른 사람들을 위해 다음 링크는 Object 클래스의 equals 및 hashCode 메서드에 대한 좋은 설명을 제공합니다. [Equals and Hash Code] (http://www.javaranch.com/journal/2002/10) /equalhash.html) – SBaha

1

...

DefaultComboBoxModel cmod = new DefaultComboBoxModel(tempCompanyList); 
    companyName.setModel(cmod); 

당신이 할 수있는 그들이 이미 언급했듯이 removeElementAt 메소드를 사용하십시오. : D