SWING i FX w jednym programieproblem z integracją

0

Cześć,
chciałbym osiągnąć następujący efekt, w aplikacji opartej na SWINGu wyświetlać wykresy z java FX zastosowałem JFXPanel, gdy uruchamiam klasę w NetBeans (run) wszystko dobrze działa, natomiast gdy wywołuje konstruktor w innej klasie otwiera się tylko JFrame bez wykresu pomijane jest Platform.runLater(new Runnable().

Wywołanie konstruktora:

 Test test = new Test();

klasa z wykresem:

 import javafx.application.Platform;
import javafx.embed.swing.JFXPanel;
import javafx.scene.Scene;
import javafx.scene.chart.BarChart;
import javafx.scene.chart.CategoryAxis;
import javafx.scene.chart.NumberAxis;
import javafx.scene.chart.XYChart;
import javafx.scene.layout.StackPane;
import javafx.scene.text.Text;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;

public class Test extends JFrame {

    JFXPanel panel;
    Scene scene;
    StackPane stack;
    Text hello;

    boolean wait = true;

    public Test() {
        final  String austria = "Austria";
        final  String brazil = "Brazil";
        final  String france = "France";
        final  String italy = "Italy";
        final  String usa = "USA";
        
        
        panel = new JFXPanel();
        
        Platform.runLater(new Runnable() {
            @Override
            public void run() {               
                
                final CategoryAxis xAxis = new CategoryAxis();
                final NumberAxis yAxis = new NumberAxis();
                final BarChart<String, Number> bc
                        = new BarChart<String, Number>(xAxis, yAxis);
                bc.setTitle("Country Summary");
                xAxis.setLabel("Country");
                yAxis.setLabel("Value");

                XYChart.Series series1 = new XYChart.Series();
                series1.setName("2003");
                series1.getData().add(new XYChart.Data(austria, 25601.34));
                series1.getData().add(new XYChart.Data(brazil, 20148.82));
                series1.getData().add(new XYChart.Data(france, 10000));
                series1.getData().add(new XYChart.Data(italy, 35407.15));
                series1.getData().add(new XYChart.Data(usa, 12000));

                XYChart.Series series2 = new XYChart.Series();
                series2.setName("2004");
                series2.getData().add(new XYChart.Data(austria, 57401.85));
                series2.getData().add(new XYChart.Data(brazil, 41941.19));
                series2.getData().add(new XYChart.Data(france, 45263.37));
                series2.getData().add(new XYChart.Data(italy, 117320.16));
                series2.getData().add(new XYChart.Data(usa, 14845.27));

                XYChart.Series series3 = new XYChart.Series();
                series3.setName("2005");
                series3.getData().add(new XYChart.Data(austria, 45000.65));
                series3.getData().add(new XYChart.Data(brazil, 44835.76));
                series3.getData().add(new XYChart.Data(france, 18722.18));
                series3.getData().add(new XYChart.Data(italy, 17557.31));
                series3.getData().add(new XYChart.Data(usa, 92633.68));

                scene = new Scene(bc, 800, 600);
                bc.getData().addAll(series1, series2, series3);
                panel.setScene(scene);
                panel.show();

                wait = false;
            }
       });
      //  panel.setScene(scene);
        
        this.setTitle("Wykres słupkowy");
        this.getContentPane().add(panel);
        this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        this.setSize(1200, 600);
        this.setVisible(true);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                new Test();
                
                
            }
        });
    }
0

a nie łatwiej Ci skorzystać z JFreeChart albo całkowicie przejść na JavaFX?

0

Program jest dość duży i przejście na java FX byłoby bardzo długotrwałe, na pewno będę przechodził ale teraz potrzebuję coś na szybko :) co do JFreeChart to przy java FX wygląda słabo. Nie wiem po prostu jak wyświetlić te okno z wykresem.

1 użytkowników online, w tym zalogowanych: 0, gości: 1