Bonjour à tous,

Mon problème est le suivant, j'ai un live chart affichant le débit upload et download en JavaFX et j'aimerais qu'à partir de ma jframe, en cliquant sur le bouton, la chart démarre.

En cherchant sur le net, j'ai essayé bcp de chose mais rien, je ne sais pas comment créer un constructeur JavaFX afin de l'appeler dans la jframe.

Code du bouton de la jframe :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
 
        final CountDownLatch init = new CountDownLatch(1);
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                MTstc mTstc = new MTstc();
                init.countDown();
            }
        });
        try {
            init.await();
        } catch (InterruptedException ex) {
            Logger.getLogger(SurvReseau.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
Code de la chart JavaFX:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
 
 
import java.text.SimpleDateFormat;
import java.util.Date;
import javafx.application.Platform;
import javafx.concurrent.Service;
import javafx.concurrent.Task;
import javafx.scene.chart.CategoryAxis;
import javafx.scene.chart.LineChart;
import javafx.scene.chart.XYChart;
import javafx.application.Application;
import static javafx.application.Application.launch;
import javafx.scene.Scene;
import javafx.scene.chart.NumberAxis;
import javafx.stage.Stage;
import org.hyperic.sigar.Sigar;
import org.hyperic.sigar.SigarException;
 
public class MTstc extends Application {
 
 
    public static void main(String [] args){
        launch(args);
    }
 
    final XYChart.Series seriesDownload = new XYChart.Series();
    final XYChart.Series seriesUpload = new XYChart.Series();
    final CategoryAxis xAxis = new CategoryAxis();
    final NumberAxis yAxis = new NumberAxis();
    MTspeedtest speedtest; 
    @Override
    public void start(Stage stage) throws SigarException, InterruptedException {
 
        speedtest = new MTspeedtest(new Sigar());
        stage.setTitle("Activités ascendant et descendant");
        xAxis.setAutoRanging(true);
        xAxis.setLabel("Temps");
        yAxis.setLabel("Taille");
        final LineChart<String, Number> lineChart = new LineChart<>(xAxis, yAxis);
        lineChart.setTitle("Kb/sec");
        seriesDownload.setName("Download");
        seriesUpload.setName("Upload");
        Scene scene = new Scene(lineChart, 800, 600);
        stage.setScene(scene);
        stage.show();
        lineChart.getData().addAll(seriesDownload,seriesUpload);
 
        Service<Integer> service = new Service<Integer>() {
 
            @Override
            protected Task<Integer> createTask() {
                return task;
            }
        };
        service.start(); 
    }
 
    Task<Integer> task = new Task<Integer>() {
 
        @Override
        protected Integer call() throws Exception {
            int iterations;
            for (iterations = 0; iterations < 100000; iterations++) {
                if (isCancelled()) {
                    break;        
                }
                final Date date = new Date();
                final float i = speedtest.getMetric()[0];
                final float j = speedtest.getMetric()[1];
                Platform.runLater(new Runnable() {
                    @Override
                    public void run() {   
                        seriesDownload.getData().add(new XYChart.Data(new SimpleDateFormat("HH:mm:ss").format(new Date()), i)); 
                        seriesUpload.getData().add(new XYChart.Data(new SimpleDateFormat("HH:mm:ss").format(new Date()), j));
                        xAxis.autosize();
                        if (seriesDownload.getData().size() > 20 || seriesUpload.getData().size() > 20) {
                            seriesDownload.getData().remove(0, seriesDownload.getData().size() - 20);
                            seriesUpload.getData().remove(0, seriesUpload.getData().size() - 20);
                        }
                    }      
                }); 
                Thread.sleep(1000);
            }
            return iterations;
        }
    };
}
Tout idée est la bienvenue... merci.