Как зайти в Даркнет?!
25th January, 01:11
8
0
Как в tkinter из поля ввода Entry получить значение в одну переменную и обновить строку кнопкой, затем получить ещё одно введённое значение и затем сложить их. Ниже пример кода
21st July, 19:00
899
0
Программа, которая создает фейковые сервера в поиске игровых серверов CS 1.6 Steam
21st March, 17:43
952
0
Очень долго работает Update запрос Oracle
27th January, 09:58
916
0
не могу запустить сервер на tomcat HTTP Status 404 – Not Found
21st January, 18:02
907
0
Где можно найти фрилансера для выполнения поступающих задач, на постоянной основе?
2nd December, 09:48
942
0
Разработка мобильной кроссплатформенной военной игры
16th July, 17:57
1727
0
период по дням
25th October, 10:44
3957
0
Пишу скрипты для BAS только на запросах
16th September, 02:42
3722
0
Некорректный скрипт для закрытия блока
14th April, 18:33
4614
0
прокидывать exception в блоках try-catch JAVA
11th March, 21:11
4382
0
Помогите пожалуйста решить задачи
24th November, 23:53
6087
0
Не понимаю почему не открывается детальное описание продукта
11th November, 11:51
4352
0
Нужно решить задачу по программированию на массивы
27th October, 18:01
4400
0
Метода Крамера С++
23rd October, 11:55
4309
0
помогите решить задачу на C++
22nd October, 17:31
4002
0
Помогите решить задачу на python с codeforces
22nd October, 11:11
4492
0
Python с нуля: полное руководство для начинающих
18th June, 13:58
2599
0
Библиотеки для красивых диаграмм в SWT?
Я знаю следующие библиотеки для рисования диаграмм в приложении SWT/Eclipse RCP:
- Eclipse BIRT Chart Engine (ссылки на статью о том, как его использовать)
- JFreeChart
Какие еще библиотеки существуют для рисования красивых диаграмм с SWT? Или графики в Java вообще? В конце концов, вы всегда можете отобразить изображение...
Я не использовал BIRT или JGraph, однако я использую JFreeChart в своем приложении SWT. Я нашел лучший способ использовать JFreeChart в SWT, сделав композитный кадр AWT и используя функциональность AWT для JFreeChart. Это можно сделать, создав композитное изображение
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);
Существует несколько проблем в отношении реализаций на разных платформах, а также код SWT в нем очень плох (в свою защиту г-н Гилберт не знает хорошо SWT, и он сделан для AWT). Мои две самые большие проблемы заключаются в том, что AWT событий пузырятся через SWT есть некоторые ошибочные события, запущенные и из-за обертывания кадра AWT JFreeChart становится значительно медленнее.
@zvikico
Идея поместить диаграмму на веб-страницу, вероятно, не самый лучший способ пойти. Есть несколько проблем, во-первых, как Eclipse обрабатывает интеграцию веб-браузера на разных платформах непоследовательно. Также из моего понимания нескольких пакетов graphing для интернета они являются серверной стороной, требующей установки, также многие компании, включая мои, используют прокси-серверы, и иногда это создает проблемы с веб-браузером Eclipse.
Те, что я использовал, - это JChart2D и JFreeChart. Летом я сделал приложение для живого плоттера и использовал для этого JFreeChart. Парень, который начал проект, использовал JChart2D, но я обнаружил, что у него недостаточно возможностей для настройки внешнего вида диаграммы.
JChart2D должен быть очень быстрым, поэтому, если вам нужно сделать живой график, посмотрите на него, хотя у JFreeChart не было никаких проблем с выполнением графика несколько раз в секунду.
Там же довольно большой список картографических библиотек на java2s.com
Я также искал библиотеку диаграмм для приложения Eclipse RCP, наткнулся на сообщение Калеба здесь и определенно могу рекомендовать SWTChart сейчас сам. Это намного быстрее, чем JFreeChart для меня, плюс легко расширяемый. Если бы мне действительно пришлось жаловаться на что-то, я бы сказал, что javadoc может быть немного более многословным, но это просто говорит о том, что все остальное отлично.
Есть также диаграммы ILOG JViews , которые выглядят довольно полнофункциональными... если вы можете себе это позволить. Вот некоторые дополнительные сведения об использовании его с eclipse.
После оценки нескольких вариантов я решил использовать библиотеку JavaScript для отображения графиков в моем плагине Eclipse. Как уже предлагал zvikico, можно показать страницу html в браузере. На странице html вы можете использовать одну из библиотек JavaScript для выполнения фактического построения графика. Если вы используете Chartist, вы можете сохранить изображение в виде файла SVG из контекстного меню.
Некоторые библиотеки диаграмм JavaScript:
D3js: http://d3js.org
Флот: http://www.flotcharts.org/
Далее JavaScript схемы построения графиков: https://en.wikipedia.org/wiki/Comparison_of_JavaScript_charting_frameworks
Пример изображения чартиста :
Пример кода 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;
}
}
Пример 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>
Для того, чтобы получить эту работу, chartist.js и chartist.min.css должны быть загружены и помещены в том же месте, что и файл html. Вы также можете включить их из интернета. Смотрите здесь еще один пример: https://www.snip2code.com/Snippet/233633/Chartist-js-example
Редактировать
Я создал обертку java для D3.js, смотрите
https://github.com/stefaneidelloth/javafx-d3
Вот что-то другое: это очень просто встроить веб-страницы в SWT просмотров. Я недавно попробовал его, и он работает очень хорошо. Вы можете видеть, к чему это приведет: есть много красивых компонентов построения графиков для HTML, это может быть вариант. Просто убедитесь, что компонент находится только на стороне клиента (если вы не хотите запустить сервер).
Я не тестировал Flash, но я уверен, что вы можете заставить его работать (естественно, это означает, что ваше программное обеспечение потребует установки плагина Flash).