2010-01-19 2 views
6

나는 두 개의 필드JComboBox 항목을 해당 ID에 매핑하는 방법은 무엇입니까?

  • 제가 DB에 저장된 모든 이름과 함께하는 JComboBox "combo1"을 채운

ID

  • 이름이 포함 된 데이터베이스의 테이블이있다. 이제는 사용자가 "combo1"항목을 선택할 때마다 선택한 항목의 "ID"를 인식 할 수있게되었습니다.

    하지만 문제는 이름이 테이블에 중복 될 수 있다는 것입니다. 따라서 테이블에 중복 된 이름이 3 개있는 것으로 가정하면

    Q1입니다. "combo1"에 항목을 표시하여 사용자가 일반 이름을 구분할 수있게하는 방법?

    2. 사용자가 항목을 클릭하면 선택한 항목에 중복 된 항목이있는 경우 사용자가 클릭 한 항목을 어떻게 인식 할 수 있습니까?

  • 답변

    10

    데이터의 당신의 쌍을 저장하는 클래스를 사용합니다. JComboBox는 toString() 메서드를 레이블로 사용합니다.

    public class Item 
    { 
        int id; 
        String name; 
    
        public String toString() 
        { 
         return this.name+"("+id+")"; 
        } 
    } 
    (...) 
    Item array[]=new Item[]{ ... };//fill the array with your items 
    JComboBox c=new JComboBox(array); 
    (...) 
    //use the combo 
    (...) 
    Item selected=(Item)c.getSelectedItem(); 
    System.err.println("id is "+selected.id); 
    
    2

    모든 ID/이름 조합을 얻은 경우 두 가지를 모두 보유하는 클래스를 만들지 마시고 JComboBox에서 반환 된 객체를 사용하여 ID를 가져 오면됩니다.

    예 :

    class NameIDObj{ 
    
    int id; 
    String name; 
    
    NameIDObj(int id, String name){ 
    this.id = id; 
    this.name = name; 
    } 
    
    public String toString(){ 
    return name+" ("+id+")"; 
    } 
    
    
    } 
    
    1

    JComboBox는 Object []를 값으로 취합니다. 나는 절대적으로 확신 할 수는 없지만 각 JComboBox 항목에 대해 이름과 ID를 가진 자신 만의 클래스를 생성하고 이러한 사용자 정의 객체의 배열을 JComboBox에 전달하려고 시도 할 수 있습니다.

    관련 문제