2013-04-23 2 views
1

for 루프 내부에서 찾을 수있는 값을 루프 내부에없는 함수에서 사용해야합니다. 이 작업을 수행. 달성하고자하는 것은 해시 맵의 키에서 값을 추출한 다음 JTable에 그 행이 선택되어있는 경우에만 (ListSelectionListener 사용)의 값으로 그려야합니다. 이 방법을 사용하면 많은 시간을 절약 할 수있는 100 개의 테이블을 그래프로 표시하지 않아도됩니다. 또한 DefaultTableModel을 사용하고 있습니다.외부의 함수에서 for 루프의 값 사용

이 내 루프입니다 : 내 tableMaker 기능에

tableMaker(model); 
for(Map.Entry<String,NumberHolder> entry : entries) 
{ 
    //add rows for each entry of the hashmap to the table    

    double[] v = new double[entry.getValue().singleValues.size()]; 
    int i = 0; 
    for(Long j : entry.getValue().singleValues) 
    { 
    v[i++] = j.doubleValue(); 
    }     
    //right here I need to take "v" 
    //and use it in my tableMaker function for that specific row 
}     

, 내 JTable를 작성하고 내가 행을 선택하면 히스토그램을 만들어 내 lowerPanel에 추가 희망 ListSelectionListener을 추가합니다. 이것은 일부 코드입니다. 내가 데이터 세트를 만들 수 있도록 v이 필요합니다.

public static void tableMaker(DefaultTableModel m) 
{ 
    JPanel lowerPanel = new JPanel(); 

    //create table here 

    frame.getContentPane().add(lowerPanel, BorderLayout.SOUTH); 
    table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); 

    table.getSelectionModel().addListSelectionListener(
      new ListSelectionListener() { 

      @Override 
      public void valueChanged(ListSelectionEvent e) { 
       if (!e.getValueIsAdjusting()) { 
        JFreeChart chart = ChartFactory.createHistogram(
         plotTitle, xaxis, yaxis, dataset, orientation, 
         show, toolTips, urls);      
       // lowerPanel.add(chart); 
       // lowerPanel.revalidate(); 
       } 
      } 
     }); 
} 
+1

나는이 문제를 이해하지 못한다. 'tableMaker (DefaultTableModel);'메소드를 사용하여'double [] v'를 필요로한다면,'double []'인수를 받아들이도록 메소드를 변경하십시오 : tableMaker (DefaultTableModel m, double [] v)' –

+0

I 특정 항목에 대해'v'를 취하여'tableMaker'에 넣어야합니다. – user2007843

+0

그러나'tableMaker'가 받아들이는 인수에 대해 제어 할 수 있습니다. 해당 메소드의 인수를 변경하여 double []을 수락하고'v'를 전달하십시오. – Mike

답변

1

난 당신이 here 설명 된 접근 방식을 구현하기 위해 노력하고 있음을 감지. 매번 새 차트를 만드는 대신 ChartPanel에 단일 차트를 만들고 XYPlot에 대한 참조를 유지하십시오. ListSelectionListener에서는 plot.setDataset()을 사용하여 차트를 업데이트 할 수 있습니다. 이 example에서 ChangeListener은 기존 List<XYDataset>에서 원하는 데이터 집합을 가져옵니다. 이 example에서 단추의 ActionListener은 호출 될 때마다 데이터 집합을 생성합니다.

+0

괜찮 았던 것 같습니다. 이제 차트를 lowerPanel에 어떻게 추가합니까? 'lowerPanel.add (chart)'가 작동하지 않습니다. – user2007843

+0

JScrollPane에 추가 할 수도 없습니다. – user2007843

+0

'ChartPanel lowerPanel = new ChartPanel (chart)'을 사용해보세요. – trashgod