当前位置: 首页 > 知识库问答 >
问题:

JFreeChart数据集不适用于JPanel

廖华翰
2023-03-14

更新:带有XYPlot的JPanel封装在JSplitPanel中。当我移动分隔符(用XYPlot放大JPanel)时,有两个XYPlot,第一个(在第一次单击时获得,第二个(如果第二次单击到另一个行/dataset->XYPlot)。

private void PrimaryTableMouseClicked(java.awt.event.MouseEvent evt) {                                          
        int row = PrimaryTable.getSelectedRow();
        int realIndex = PrimaryTable.convertRowIndexToModel(row);
        String Table_click = (PrimaryTable.getModel().getValueAt(realIndex, 0).toString());

        try {

            String query = "select wavenumber,spectrum FROM test where id_test ='" + Table_click + "'";
            pst = conn.prepareStatement(query);
            rs = pst.executeQuery();
            if (rs.next()) {

                JDBCXYDataset dataset = new JDBCXYDataset(ConnecrDb(), query);

                JFreeChart chart = ChartFactory.createXYLineChart(
                        "title",
                        "cm",
                        "in",
                        dataset,
                        PlotOrientation.VERTICAL,
                        false, //legend
                        true, //tooltip
                        false); //urls

                XYPlot plot = (XYPlot) chart.getPlot();

                ChartPanel CP = new ChartPanel(chart);
                PanelWithChart.setLayout(new BorderLayout());
                PanelWithChart.add(CP, BorderLayout.CENTER);
                PanelWithChart.repaint();
            }
             rs.close();
            pst.close();


        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, e);
        }

    }

共有1个答案

郝玄天
2023-03-14

我想这可能是你的问题

PanelWithChart.setLayout(new BorderLayout());
PanelWithChart.add(CP, BorderLayout.CENTER);

通过调用jpanel#add(),您在每次调用PrimaryTableMouseclicked时都添加了一个新组件。如果ChartPanelPanelWithChart上的唯一组件,请尝试删除以前的图表:

PanelWithChart.setLayout(new BorderLayout());
PanelWithChart.removeAll();
PanelWithChart.add(CP, BorderLayout.CENTER);

如果面板上有其他组件,这将不起作用,如果是这种情况,则需要使用panelwithchart.remove(Component comp),但这更难,因为您没有对上一个图表的引用。

dataset.removeAllSeries();
XYSeries newSeries = new XYSeries("New Data");
dataset.addSeries(newSeries);
 类似资料:
  • 我有一个df,看起来像这样: 所需的输出如下所示: 我试图删除基于列B的重复行。然而,当我运行时 我得到以下错误: 我正在从python 3运行pandas 0.19.1,因此我在这里查看了文档:http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.drop_duplicates.html 对于,我没有最模糊的

  • 我已经通过。但是,我注意到Reshuffle()没有出现在发行版中。这是否意味着我将不能在任何数据流管道中使用?有什么办法可以绕过这个吗?或者pip包可能只是不是最新的,如果Reshuffle()在github的master中,那么它将在Dataflow上可用? 根据对这个问题的回答,我试图从BigQuery中读取数据,然后在将数据写入GCP存储桶中的CSV中之前对数据进行随机化。我注意到,我用来

  • 问题内容: 我已经创建了一个表,并且正在使用http来加载表中的数据。因此,每次单击时,我的表数据都在变化,但是在表中看不到更新的数据。我创建了一个样本Plunker供参考。在我的项目中,当我单击“重新加载新数据”时,表中的数据已更改,但是在2-3次单击后,它没有更改。有人知道,如何解决它。 问题答案: ngTable指令有问题。仅在更改时更新。看看这个pl。我将$ scope [‘tablePa

  • 我目前正在使用带有Spring Data commons 1.9.1和Spring JPA 1.7.1的JpaSort。我需要使用QueryDSL,因为JPA不允许为空值定义排序。 这是我的存储库 我在我的控制器中这样做: 这就是我对JPA的看法: 这是我为QueryDSL更改的内容: 然而,似乎什么都没有得到整理。我已经启用了调试日志记录,我看到了这一点: 如果我将其更改为: 然后,按我的“数据

  • 问题内容: 为了进行快速测试,调试,创建可移植的示例和进行基准测试,R提供了许多数据集(在Base R包中)。R提示符下的命令描述了近100个历史数据集,每个数据集都有相关的描述和元数据。 Python有这样的东西吗? 问题答案: 您可以使用package从Python访问所有R数据集。 设置界面: 然后使用可用数据集的任何数据集名称进行调用(就像中的一样) 要查看可用数据集的列表以及每个数据集的

  • 我使用JFreeChart在同一个图形上有两个数据集。我试图比较图表上的点的相似程度,因此我需要访问我之前放入图表中的两个数据集,但由于某种原因,我似乎无法提取这些信息。 以下是数据的输入方式: 数据最初是成对存储的,但我知道数据是输入的,因为图形正确地显示了数据。如何返回此数据集中的两个系列?