我使用xchart Java库(http://knowm.org/open-source/xchart/)创建了这样的图表

public void createHistogram(String title, String xTitle, String yTitle, ArrayList<String> xDataSet, ArrayList<Integer> yDataSet) {
    CategoryChart chart = new CategoryChartBuilder().width(800).height(600).title(title).xAxisTitle(xTitle).yAxisTitle(yTitle).build();

    chart.getStyler().setLegendPosition(LegendPosition.InsideNW);
    chart.getStyler().setHasAnnotations(true);

    chart.addSeries("test1", xDataSet, yDataSet);

    new SwingWrapper(chart).displayChart().setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

}


但是,每当我在图形窗口中按Exit时,它就会关闭整个应用程序。有解决方法吗?

附言我尝试将“ JFrame”更改为WindowsConstants,ApplicationFrame和SwingWrapper,以查看它是否对它有任何影响,但到目前为止还没有运气。

最佳答案

我终于找到答案了。创建一个具有空表格的单独的类,如下所示:

public GraphsInterface() {
    setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    setBounds(100, 100, 850, 650);
    contentPane = new JPanel();
    contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    contentPane.setLayout(new BorderLayout(0, 0));
    setContentPane(contentPane);
}


在该类中添加一个子例程

public void createChart(CategoryChart chart) {
    JPanel panelChart = new XChartPanel(chart);
    contentPane.add(panelChart);
    contentPane.validate();
}


然后从创建图形的位置开始,创建对象并将其投影到contentPane上

public void createHistogram(String title, String xTitle, String yTitle, ArrayList<String> xDataSet, ArrayList<Integer> yDataSet) {
    CategoryChart chart = new CategoryChartBuilder().width(800).height(600).title(title).xAxisTitle(xTitle).yAxisTitle(yTitle).build();

    chart.getStyler().setLegendPosition(LegendPosition.InsideNW);
    chart.getStyler().setHasAnnotations(true);

    chart.addSeries("test1", xDataSet, yDataSet);

    GraphsInterface graph = new GraphsInterface();
    graph.setVisible(true);
    graph.createChart(chart);

}

10-01 18:11