2013-04-21 2 views
1

나는 날짜 (키)와 금액 (값)을 나타내는 HashMap<String, String>을 가지고있다.GUI에서 HashMap 데이터를 표시하는 방법?

이 정보를 내 인터페이스에 표시하고 싶습니다. ArrayList를 사용하고 HashMap에 추가 된 각 새 키 & 값에 대해 새 JLabel을 추가하기 시작했습니다. 그러나이 문제를 표시하도록 인도하고,이 옳은 방법이 아니다처럼 나 또한 기분이 : 내가 달성하기 위해 노력하고있어 측면에서

Iterator iterator = labels.entrySet().iterator(); 
    while (iterator.hasNext()) { 
     Map.Entry pairs = (Map.Entry)iterator.next(); 
     entries.add(new JLabel(pairs.getKey() + ": £" + pairs.getValue())); 
     for(JLabel entry : entries) { 
      mainPanel.add(entry); 
      for(int i = 0; i < entries.size() - 1; i+=2) { 
       JLabel labelOne = entries.get(i); 
       JLabel labelTwo = entries.get(i+1); 
       mainPanelLayout.putConstraint(SpringLayout.NORTH, labelOne, 
        400, 
        SpringLayout.NORTH, contentPane); 
       mainPanelLayout.putConstraint(SpringLayout.NORTH, labelTwo, 
        10, 
        SpringLayout.SOUTH, labelOne); 

      } 
      /*mainPanelLayout.putConstraint(SpringLayout.NORTH, entry, 
       400, 
       SpringLayout.NORTH, contentPane);*/ 
     } 
    } 

, 나는 그렇게 같은 정보를 표시 할을 :

21/04/13 : 300 

22/04/13 : 400 

HashMap의 정보를 GUI에 표시하는 방법이 있습니까?

+0

'JTable'을 보았습니까? – SimonC

+0

['EnvTableTest'] (예 : http://stackoverflow.com/a/9134371/230513). – trashgod

답변

3

JTable을 사용하여 한 열에 키의 문자열 표현을 표시하고 다른 열에 해당 값의 중요한 필드를 나타내는 String 표현을 표시합니다. 필자가 생각하는 가장 중요한 단계는 데이터를 보관할 수있는 알맞은 TableModel을 만드는 것입니다. Map을 데이터 핵으로 사용할 수는 있지만지도가 제대로 작동하려면 아마도 LinkedHashMap 또는 TreeMap이라고 생각하는 방식으로 주문할 수 있어야합니다.

+0

'Map'에 무작위로 접근하기 위해서는 최소한 데이터 복사가 필요합니다. –

+0

아하, 나는 JTable로 놀았지만, 주요 문제는 행과 열을 편집 할 수 있다는 것이 었습니다 (문제를 해결하는 방법을 알고 있다고 생각하기는하지만). 그래서 고마워, 이제는 그 방향으로 나아가 야한다는 것을 알았어! –

+0

@ TomHawtin-tackline : 확실하지 않습니다. Map이 정렬되고 Map 데이터에 대한 변경 사항이 발생하면 AbstractTableModel 데이터가 변경된 메서드 중 하나에서 무작위 액세스가 필요할 때마다 맵을 반복 할 수 있습니다. –

관련 문제