Я создаю приложение java swing с диаграммами javafx, добавленными в JFrame
. Нажмите кнопку, чтобы отобразить диаграмму в новом окне. Все отлично работает в первый раз вокруг, но при закрытии окна графика и нажмите кнопку еще раз, он выходит из строя перед отображением следующего окна графика, на линииjavafx swing падает при попытке отобразить график дважды
fxPanel.setScene(scene);
Я думаю fxPanel
или scene
должен быть сброшена при закрытии окно диаграммы в первый раз, но я ничего не пробовал до сих пор. Ниже приведен график построения графика. Любая помощь очень ценится.
public class PlotChart extends JFrame implements WindowListener {
private JFrame chartWindow = new JFrame("Commitment Of Traders");
public PlotChart(JFXPanel fxPanel) {
plotChart(fxPanel);
}
public void plotChart(JFXPanel fxPanel) {
final NumberAxis xAxis = new NumberAxis();
final NumberAxis yAxis = new NumberAxis();
final LineChart<Number,Number> lineChart = new LineChart<Number,Number>(xAxis,yAxis);
final Scene scene = new Scene(lineChart,800,600);
xAxis.setLabel("Week");
lineChart.setTitle("Commitment of Traders");
//Define a series
XYChart.Series commercials = new XYChart.Series<>();
XYChart.Series nonCommercials = new XYChart.Series<>();
XYChart.Series CLong = new XYChart.Series<>();
XYChart.Series CShort = new XYChart.Series<>();
commercials.setName("Dealers");
nonCommercials.setName("Hedge Funds");
//Populate series
for (int i=0;i<ReadCSV.getCommercials().size();i++) {
commercials.getData().add(new XYChart.Data(i,ReadCSV.getCommercials().get(i)));
nonCommercials.getData().add(new XYChart.Data(i,ReadCSV.getNonCommercials().get(i)));
}
lineChart.getData().add(commercials);
lineChart.getData().add(nonCommercials);
fxPanel.setScene(scene); // exception in this line
chartWindow.add(fxPanel);
chartWindow.setSize(800, 600);
chartWindow.setVisible(true);
chartWindow.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
chartWindow.addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosing(java.awt.event.WindowEvent windowEvent) {
ReadCSV.clearVars();
System.out.println("window closed");
}
});
}
WindowListener
метод переопределяет опущена
Добро пожаловать в Stackoverflow! Просьба указать трассировку стека или сообщение об ошибке в вопросе (трассировка стека файлов как код). –
Привет Оле, спасибо за ответ, нет сообщения об ошибке, это просто зависает. Я попробовал окружение с помощью try/catch, но до сих пор не дает ошибки ... –