Question

Je sais que les bibliothèques suivantes pour le dessin des diagrammes dans un SWT/Eclipse RCP de l'application:

D'autres bibliothèques sont là pour le dessin jolis tableaux avec SWT?Ou des graphiques en Java en général?Après tout, vous pouvez toujours afficher une image...

Était-ce utile?

La solution

Je n'ai pas utilisé BIRT ou JGraph, cependant j'utilise JFreeChart dans mon SWT application.J'ai trouvé la meilleure façon d'utiliser JFreeChart en SWT est d'en faire un matériau composite un AWT cadre et à l'aide de l'AWT fonctionnalité pour JFreeChart.La façon de le faire est par la création d'un composite

Composite comp = new Composite(parent, SWT.NONE | SWT.EMBEDDED);
Frame frame = SWT_AWT.new_Frame(comp);
JFreeChart chart = createChart();
ChartPanel chartPanel = new ChartPanel(chart);
frame.add(chartPanel);

Il y a plusieurs problèmes en ce qui concerne les implémentations différentes plateformes ainsi que la SWT code, il est très pauvre (dans sa défense de M.Gilbert ne sais pas SWT bien et il est fait pour la AWT).Mes deux plus gros problèmes sont comme AWT événements de la bulle en haut à travers SWT il y a quelques erronée des événements déclenchés et en raison d'habillage de l'AWT cadre JFreeChart devient considérablement plus lent.

@zvikico

L'idée de mettre le tableau dans une page web n'est probablement pas un excellent moyen d'aller.Il y a quelques problèmes de première Eclipse gère l'intégration du navigateur web sur différentes plates-formes est incohérent.Aussi à partir de ma compréhension de quelques graphiques des packages pour le web, ils sont à côté serveur exiger que le programme d'installation, aussi de nombreuses entreprises, y compris le mien utilisent des serveurs proxy et cela crée parfois des problèmes avec l'Éclipse de la navigation web.

Autres conseils

SWTChart donne de bons résultats pour la ligne, de dispersion, de bar, et des zones graphiques.L'API est simple et il y a de nombreux exemples sur le site.Je suis passé de la trouver sur google pour visualiser mes données en moins d'une heure.

SWTChart

Vous pourriez, comme cette un trop

Il a la possibilité de tracer des données en temps réel avec votre propre fournisseur de données.

enter image description here

Celui que j'ai utilisé sont JChart2D et JFreeChart.J'ai fait un live traceur application au cours de l'été et utilisé JFreeChart pour que.Le gars qui a commencé le projet avait utilisé JChart2D mais j'ai trouvé qu'il n'a pas assez d'options pour modifier le graphique de regarder et de sentir.

JChart2D est censé être très rapide si vous avez besoin de faire vivre comploter un coup d'oeil, bien que JFreeChart n'ai aucun problème à faire un terrain un certain nombre de fois par seconde.

Il y a également toute une liste de cartographie des bibliothèques sur java2s.com

J'ai également été à la recherche pour une cartographie de la bibliothèque pour une application Eclipse RCP, suis tombé sur Caleb post ici et peut certainement vous recommandons de SWTChart maintenant moi-même.Il est beaucoup plus rapide que JFreeChart pour moi, plus facilement extensible.Si je voudrais vraiment avoir à se plaindre de quelque chose, je dirais que la javadoc pourrait être un peu plus détaillé, mais c'est juste pour dire que tout le reste est génial.

Il y a aussi ILOG JViews Graphiques qui a l'air assez complet... si vous pouvez vous le permettre.Ici est quelques infos supplémentaires sur l'utilisation d'eclipse.

Je vous suggère d'essayer jzy3d, une simple bibliothèque java pour le traçage des données 3d.C'est pour java, sur AWT, Swing ou SWT.

Après evaluationg plusieurs options, j'ai décidé d'utiliser une bibliothèque JavaScript pour montrer parcelles dans mon Plugin Eclipse.Comme zvikico déjà suggéré, il est possible d'afficher une page html dans un navigateur.Dans la page html, vous pouvez utiliser l'un des librairies JavaScript pour faire le tracé.Si vous utilisez Chartist vous pouvez enregistrer l'image en tant que fichier SVG à partir du menu contextuel.

Un peu de JavaScript cartographie des bibliothèques:

Chartist image par Exemple:

enter image description here

Exemple de code java:

package org.treez.results.chartist;

import java.net.URL;

import javafx.application.Application;
import javafx.concurrent.Worker;
import javafx.geometry.HPos;
import javafx.geometry.VPos;
import javafx.scene.Scene;
import javafx.scene.layout.Region;
import javafx.scene.paint.Color;
import javafx.scene.web.WebEngine;
import javafx.scene.web.WebView;
import javafx.stage.Stage;
import netscape.javascript.JSObject;

public class WebViewSample extends Application {

    private Scene scene;

    @Override
    public void start(Stage stage) {
        // create the scene
        stage.setTitle("Web View");
        Browser browser = new Browser();
        scene = new Scene(browser, 750, 500, Color.web("#666970"));
        stage.setScene(scene);
        stage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

class Browser extends Region {

    final WebView browser = new WebView();

    final WebEngine webEngine = browser.getEngine();

    public Browser() {

        //add the web view to the scene
        getChildren().add(browser);

        //add finished listener
        webEngine.getLoadWorker().stateProperty().addListener((obs, oldState, newState) -> {
            if (newState == Worker.State.SUCCEEDED) {
                executeJavaScript();
            }
        });

        // load the web page
        URL url = WebViewSample.class.getResource("chartist.html");
        String urlPath = url.toExternalForm();
        webEngine.load(urlPath);

    }

    private void executeJavaScript() {

        String script = "var chartist = new Chartist.Line(" + "'#chart'," + " " + "{"
                + " labels: [1, 2, 3, 4, 5, 6, 7, 8]," + "series: [" + " [5, 9, 7, 8, 5, 3, 5, 44]" + "]" + "}, " + ""
                + "{" + "  low: 0," + "  showArea: true" + "}" + "" + ");" + " var get = function(){return chartist};";

        webEngine.executeScript(script);

        Object resultJs = webEngine.executeScript("get()");

        //get line
        JSObject line = (JSObject) resultJs;
        String getKeys = "{var keys = [];for (var key in this) {keys.push(key);} keys;}";
        JSObject linekeys = (JSObject) line.eval(getKeys);

        JSObject options = (JSObject) line.eval("this.options");
        JSObject optionkeys = (JSObject) options.eval(getKeys);

        options.eval("this.showLine=false");

    }

    @Override
    protected void layoutChildren() {
        double w = getWidth();
        double h = getHeight();
        layoutInArea(browser, 0, 0, w, h, 0, HPos.CENTER, VPos.CENTER);
    }

    @Override
    protected double computePrefWidth(double height) {
        return 750;
    }

    @Override
    protected double computePrefHeight(double width) {
        return 500;
    }
}

Exemple de page html:

<!DOCTYPE html>
<html>
<head>
    <link rel="stylesheet" type="text/css" href="chartist.min.css">       
</head>
<body>
    <div class="ct-chart" id="chart"></div>
    <script type="text/javascript" src="chartist.js"></script>
</body>
</html>

Afin d'obtenir ce travail, chartist.js et chartist.min.css besoin d'être téléchargé et mis dans le même emplacement que le fichier html.Vous pouvez également les inclure à partir du web.Voir ici pour un autre exemple:https://www.snip2code.com/Snippet/233633/Chartist-js-example

Modifier

J'ai créé un wrapper java pour D3.js, voir

https://github.com/stefaneidelloth/javafx-d3

Il y a aussi JGraph, mais je ne suis pas sûr si c'est seulement pour les graphes (c'est à direles nœuds et les arêtes), ou si elle n'graphiques aussi.

Voici quelque chose de différent:il est très à intégrer des pages web en SWT points de vue.Récemment, j'ai essayé et il fonctionne très bien.Vous pouvez voir où cela se passe:il ya beaucoup de beaux éléments graphiques pour le HTML, il pourrait être une option.Juste assurez-vous que le composant côté client uniquement (sauf si vous voulez démarrer un serveur).

Je n'ai pas testé le Flash, mais je suis sûr que vous pouvez obtenir pour travailler (naturellement, cela signifie que votre logiciel nécessite le plug-in Flash installé).

JCharts est une autre option.Il est semblable à JFreeChart mais la documentation est libre.Il n'a pas de support direct pour SWT mais vous pouvez toujours générer une image et de l'intégrer dans une SWT cadre.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top