2014-02-14 1 views
0

GUI 만 사용하여 JCombobox Netbeans Swing Matisse에서 키 - 값 문자열 맵/쌍을 설정할 수있는 방법이 있습니까? 스크린 샷 아래 는 단일 목록을 JComboBox List DataNetbeans 스윙 마티스 JCombobox 키 - 값 쌍

을 삽입 할 수 있지만, 거기는 HTML 옵션을 선택 태그 저장된 값으로

Value - Display 
_____ _____ 
ITEM1 - Item 1 
ITEM2 - Item 2 
ITEM3 - Item 3 
ITEM4 - Item 4 

처럼 대신 코드로 마티스 GUI를 사용하여지도/키 - 값 문자열 쌍을 삽입하는 방법입니다 및 표시 값.

+0

당신이 달성하고자하는 바를 정확히 설명 할 수 있습니까? 대답은 예 또는 아니오 –

+0

@peeskillet을 검토하십시오. 질문이 업데이트되었습니다. – hiddenuser

+0

그러면 디스플레이가 핵심입니까? –

답변

2

그래서 내가하지 코드 GUI를 사용하는 방법에 대한 질문입니다 왜

작성하는 IDE에 의존하지 않는 것을/당신을위한 코드를 생성합니다. 코드는 절대 이식 할 수 없습니다.

아마도 모든 키/값 쌍의 텍스트 파일을 만들 수 있습니다. 그런 다음 각 파일을 읽는 간단한 루틴을 만들어 데이터를 구문 분석하고 ComboBoxModel에 사용자 지정 개체를 추가합니다.

이러한 맞춤형 개체의 예로는 Combo Box With Hidden Data을 확인하십시오. 콤보 상자에 값을 표시하기 위해 toString() 메서드를 재정의하는 간단한 객체입니다.

그리고 사용자 정의 렌더러를 사용해야하는 경우에는 반쪽 만 맞습니다. 콤보 상자의 기본 기능을 손상시키지 않으면 서 사용자 지정 렌더러를 사용할 수있는 Combo Box With Custom Renderer을 확인하십시오.

1

"전용 GUI를 사용하여?"

난 당신이 디자인 뷰에서 의미 가정합니다. 나는 그렇게 생각하지 않는다. 그냥 코드를 작성하십시오. 그렇게 어렵지 않습니다.

여기 맵 값으로 Student 오브젝트 맵 keyStudentid를 사용하는 예이다. keyJComboBox의 표시 값입니다. 값은 get(id)을 사용하여 선택 항목에서 검색됩니다.

import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.util.HashMap; 
import java.util.Map; 
import javax.swing.JComboBox; 
import javax.swing.JFrame; 
import javax.swing.SwingUtilities; 
import javax.swing.border.EmptyBorder; 

public class MapCombo { 

    public MapCombo() { 
     Map<Integer, Student> map = createMap(); 
     JComboBox cbox = createComboBox(map); 
     cbox.setBorder(new EmptyBorder(20, 20, 20, 20)); 

     JFrame frame = new JFrame("Map ComboBox"); 
     frame.add(cbox); 
     frame.pack(); 
     frame.setLocationRelativeTo(null); 
     frame.setVisible(true); 
    } 

    private Map<Integer, Student> createMap() { 
     Map<Integer, Student> map = new HashMap<>(); 
     Student s1 = new Student(23, "Micheal Jordan"); 
     Student s2 = new Student(6, "Lebron James"); 
     Student s3 = new Student(3, "Chris Paul"); 
     Student s4 = new Student(8, "Kobe Briant"); 
     Student s5 = new Student(21, "Tim Duncan"); 

     map.put(s1.getId(), s1); 
     map.put(s2.getId(), s2); 
     map.put(s3.getId(), s3); 
     map.put(s4.getId(), s4); 
     map.put(s5.getId(), s5); 

     return map; 
    } 

    private JComboBox createComboBox(final Map<Integer, Student> map) { 
     final JComboBox cbox = new JComboBox(); 
     for (Integer id : map.keySet()) { 
      cbox.addItem(id); 
     } 

     cbox.addActionListener(new ActionListener() { 

      @Override 
      public void actionPerformed(ActionEvent e) { 
       Integer id = (Integer)cbox.getSelectedItem(); 
       System.out.println(map.get(id)); 
      } 
     }); 

     return cbox; 
    } 

    public class Student { 

     String name; 
     Integer id; 

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

     public Integer getId() { 
      return id; 
     } 

     @Override 
     public String toString() { 
      return "Name: " + name + " - Stud ID: " + id; 
     } 
    } 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 
      public void run() { 
       new MapCombo(); 
      } 
     }); 
    } 
} 
+0

사실 JCombobox (키 - 값)와 양식이 많이 있습니다. 그래서 내가 왜 GUI가 아닌 GUI를 사용하는지 묻고 있습니다. – hiddenuser