1

ループ内にない関数で使用するために、for ループ内から見つけた値を取得する必要がありますが、これを行う方法がわかりません。私が達成したいと思っているのは、ハッシュマップのキーから値を抽出して、JTable その行が選択されている場合にのみプロットすることです(を使用ListSelectionListener)。このようにして、多くの時間を節約できる 100 個のテーブルをグラフ化することを避けることができます。また、私は使用してDefaultTableModelいます。

これは私の for ループです:

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
}                  

私のtableMaker関数では、 my を作成して a をJTable追加ListSelectionListenerします。行が選択されたときにヒストグラムを作成し、lowerPanel に追加したいと考えています。これはコードの一部です。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();
                }
            }
        });
}
4

1 に答える 1

1

ここで概説したアプローチを実装しようとしているように感じます。毎回新しいグラフを作成しようとする代わりに、 に 1 つのグラフを作成し、ChartPanelその への参照を保持しますXYPlot。で、 を使用してチャートを更新ListSelectionListenerできます。plot.setDataset()このでは、 aChangeListenerは既存の から目的のデータセットをフェッチしますList<XYDataset>。このでは、ボタンActionListenerは呼び出されるたびにデータセットを生成します。

于 2013-04-23T18:08:31.263 に答える