powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Динамический График Java
6 сообщений из 6, страница 1 из 1
Динамический График Java
    #39171205
Dimmf28
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, я профан но мне необходимо выводить отображение изменения температуры в реальном времени на графике,
для имитации можно использовать цикл с задержкой, нашел код для рисования динамического графика с JfreeChart
вот ссылка http://www.java2s.com/Code/Java/Chart/JFreeChartDynamicDataDemo.htm, код ниже ,
можете мне помочь пусть у меня в массиве есть значения, как их с помощью цикла и задержки нарисовать на этом примере

package org.jfree.chart.demo;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JPanel;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.ValueAxis;
import org.jfree.chart.plot.XYPlot;
import org.jfree.data.time.Millisecond;
import org.jfree.data.time.TimeSeries;
import org.jfree.data.time.TimeSeriesCollection;
import org.jfree.data.xy.XYDataset;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;

/**
* A demonstration application showing a time series chart where you can dynamically add
* (random) data by clicking on a button.
*
*/
public class DynamicDataDemo extends ApplicationFrame implements ActionListener {

/** The time series data. */
private TimeSeries series;

/** The most recent value added. */
private double lastValue = 100.0;

/**
* Constructs a new demonstration application.
*
* @param title the frame title.
*/
public DynamicDataDemo(final String title) {

super(title);
this.series = new TimeSeries("Random Data", Millisecond.class);
final TimeSeriesCollection dataset = new TimeSeriesCollection(this.series);
final JFreeChart chart = createChart(dataset);

final ChartPanel chartPanel = new ChartPanel(chart);
final JButton button = new JButton("Add New Data Item");
button.setActionCommand("ADD_DATA");
button.addActionListener(this);

final JPanel content = new JPanel(new BorderLayout());
content.add(chartPanel);
content.add(button, BorderLayout.SOUTH);
chartPanel.setPreferredSize(new java.awt.Dimension(500, 270));
setContentPane(content);

}

/**
* Creates a sample chart.
*
* @param dataset the dataset.
*
* @return A sample chart.
*/
private JFreeChart createChart(final XYDataset dataset) {
final JFreeChart result = ChartFactory.createTimeSeriesChart(
"Dynamic Data Demo",
"Time",
"Value",
dataset,
true,
true,
false
);
final XYPlot plot = result.getXYPlot();
ValueAxis axis = plot.getDomainAxis();
axis.setAutoRange(true);
axis.setFixedAutoRange(60000.0); // 60 seconds
axis = plot.getRangeAxis();
axis.setRange(0.0, 200.0);
return result;
}

// ****************************************************************************
// * JFREECHART DEVELOPER GUIDE *
// * The JFreeChart Developer Guide, written by David Gilbert, is available *
// * to purchase from Object Refinery Limited: *
// * *
// * http://www.object-refinery.com/jfreechart/guide.html *
// * *
// * Sales are used to provide funding for the JFreeChart project - please *
// * support us so that we can continue developing free software. *
// ****************************************************************************

/**
* Handles a click on the button by adding new (random) data.
*
* @param e the action event.
*/
public void actionPerformed(final ActionEvent e) {
if (e.getActionCommand().equals("ADD_DATA")) {
final double factor = 0.90 + 0.2 * Math.random();
this.lastValue = this.lastValue * factor;
final Millisecond now = new Millisecond();
System.out.println("Now = " + now.toString());
this.series.add(new Millisecond(), this.lastValue);
}
}

/**
* Starting point for the demonstration application.
*
* @param args ignored.
*/
public static void main(final String[] args) {

final DynamicDataDemo demo = new DynamicDataDemo("Dynamic Data Demo");
demo.pack();
RefineryUtilities.centerFrameOnScreen(demo);
demo.setVisible(true);

}

}
...
Рейтинг: 0 / 0
Динамический График Java
    #39171260
Фотография Dmitry.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
серия это и есть массив данных с парой время и значение (температура)

тебе достаточно вызывать в цикле это:

this.series.add(new Millisecond(), ТЕМПЕРАТУРА);
...
Рейтинг: 0 / 0
Динамический График Java
    #39171271
Dimmf28
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry.,
а можешь подсказать как это реализовать, к примеру пусть у меня в 1 классе будет код что представлен выше а во втором в main
цикл с задержкой 2 секунды( для имитации), как правально вызвать из него 1 класс чтоб рисовать график?
...
Рейтинг: 0 / 0
Динамический График Java
    #39171472
Фотография Dmitry.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
добавь метод в класс, что выше :

Код: java
1.
2.
3.
public addValue(double d){
	this.series.add(new Millisecond(), this.lastValue);
}



а в цикле:

Код: java
1.
2.
3.
4.
5.
for(...) {
	double temperature = ...;
	/* demo -это инстанс первого класса*/
	demo.addValue(temperature);
}
...
Рейтинг: 0 / 0
Динамический График Java
    #39171476
Фотография Dmitry.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в методе ошибочка

Код: java
1.
2.
3.
public addValue(double value){
	this.series.add(new Millisecond(), value);
}
...
Рейтинг: 0 / 0
Динамический График Java
    #39171487
Dimmf28
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry., а можешь тыкнуть пальцем где цикл написать
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Динамический График Java
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]