1

我需要从 for 循环内找到的值用于不在循环内的函数中,但我不知道如何执行此操作。我希望完成的是从哈希图中的键中提取值,然后JTable 仅在选择该行时才在 a 中绘制(使用 a ListSelectionListener)。这样,我可以避免绘制一百个表格,从而节省大量时间。我也在使用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函数中,我创建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

我感觉到您正在尝试实施此处概述的方法。与其每次都尝试创建一个新图表,不如在 a 中创建一个图表ChartPanel并保留对其的引用XYPlot。在您的ListSelectionListener中,您可以使用plot.setDataset()来更新图表。在此示例中,aChangeListener从现有的List<XYDataset>. 在此示例ActionListener中,每次调用按钮时都会生成数据集。

于 2013-04-23T18:08:31.263 回答