Bonjour,
J’aimerais savoir comment utiliser l'API de Google concernant les Charts, dans mon application java (NetBeans IDE) ?
Quelqu'un saurait-il me guider un peu ?
Merci d'avance pour votre attention.
Version imprimable
Bonjour,
J’aimerais savoir comment utiliser l'API de Google concernant les Charts, dans mon application java (NetBeans IDE) ?
Quelqu'un saurait-il me guider un peu ?
Merci d'avance pour votre attention.
Bonjour,
Google Chart est une API HTML5 (+JavaScript) donc il te faut 1) une connexion internet active et 2) la possibilité d'afficher du HTML/d’intégrer un navigateurs embarqué dans une application Java.
Coté AWT, tu peux oublier.
Coté Swing, je ne sais pas si JEditorPane supporterai GoogleChart vu son grand age + le fait que son support de HTML 4 n'est même pas complet.
Coté SWT, aucune idée.
Coté NetBeans Platform, aucune idée (a priori voir Swing).
Coté Eclipse RPC, aucune idée (a priori voir SWT).
Coté JavaFX, il suffit d'utiliser le contrôle WebView. Par exemple :
TestPie.html (il s'agit en fait du code de test disponible sur le didacticiels de Google Chart)
Code:
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 <html> <head> <!--Load the AJAX API--> <script type="text/javascript" src="https://www.google.com/jsapi"></script> <script type="text/javascript"> // Load the Visualization API and the piechart package. google.load('visualization', '1.0', {'packages':['corechart']}); // Set a callback to run when the Google Visualization API is loaded. google.setOnLoadCallback(drawChart); // Callback that creates and populates a data table, // instantiates the pie chart, passes in the data and // draws it. function drawChart() { // Create the data table. var data = new google.visualization.DataTable(); data.addColumn('string', 'Topping'); data.addColumn('number', 'Slices'); data.addRows([ ['Mushrooms', 3], ['Onions', 1], ['Olives', 1], ['Zucchini', 1], ['Pepperoni', 2] ]); // Set chart options var options = {'title':'How Much Pizza I Ate Last Night', 'width':400, 'height':300}; // Instantiate and draw our chart, passing in some options. var chart = new google.visualization.PieChart(document.getElementById('chart_div')); chart.draw(data, options); } </script> </head> <body> <!--Div that will hold the pie chart--> <div id="chart_div"></div> </body> </html>
TestPie.java
Ici, j'utilise un contenu statique : c'est a dire que le HTML est déjà pré-généré. Le fichier HTML se trouve dans le même package que le fichier Java. Il est chargé au démarrage de l'application et si une connexion internet est active, il ira construire et afficher le graphique en camembert.Code:
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 package googlechart; import java.net.URL; import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.layout.StackPane; import javafx.scene.web.WebView; import javafx.stage.Stage; public class TestPie extends Application { @Override public void start(Stage primaryStage) { final URL url = getClass().getResource("TestPie.html"); final WebView webView = new WebView(); webView.getEngine().load(url.toExternalForm()); final StackPane root = new StackPane(); root.getChildren().add(webView); final Scene scene = new Scene(root, 500, 500); primaryStage.setTitle("Test Google Chart"); primaryStage.setScene(scene); primaryStage.show(); } public static void main(String[] args) { launch(args); } }
Cependant il est possible que ton app construise une chaine au format HTML avec ses propres données de manière à montrer des données générées dynamiquement par l'app. On place alors ce contenu HTML dans un fichier temporaire et on l'affiche ensuite dans WebView de manière similaire a ce qui est fait ici avec le contenu statique.
Il est de plus possible de permettre au code Java de dialoguer avec le code JavaScript et vice versa ce qui devrait permettre de pouvoir modifier le contenu de la page au vol. Plus d'info dans la FAQ JavaFX.
Il y a une solution en embarquant dans ton appli swing un browser chromium.
La société teamdev a développé une bibliothèque JxBrowser qui permet de faire exécuter du code HTML5 AJAX dans une appli desktop.
Regarde le tuto de Vladimir Ikryanov à l'adresse suivante : http://java.dzone.com/articles/google-maps-java-swing.
Bon courage