我使用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);
}