我使用线程在一个类中获取计数器值并写入JFreeChart
在另一个线程中。执行时,它交替工作,但只显示最后的图形。它还将 y 轴标签值显示为 Float,但实际检索值是 int。我该如何解决这些问题?
XYDataset Dataset;
TimeSeries Series = new TimeSeries("Random Data");
Second sec = new Second();
ChartPanel CPanel;
Value = Integer.parseInt(MySQLClass.Map_MySql.get(""+MainWindow.SelectedNode+""));
String CounterName = MainWindow.SelectedNode.toString();
Series.add(sec, Value);
Dataset = new TimeSeriesCollection(Series);
System.out.println("Ds="+Dataset);
Chart = ChartFactory.createTimeSeriesChart(CounterName, "Time", "Range", Dataset, true, false, false);
System.out.println("Chart Created");
XYPlot Plot = (XYPlot)Chart.getPlot();
Plot.setBackgroundPaint(Color.LIGHT_GRAY);
Plot.setDomainGridlinePaint(Color.WHITE);
Plot.setRangeGridlinePaint(Color.RED);
Panel1.revalidate();
CPanel = new ChartPanel(Chart);
CPanel.setVisible(true);
Panel1.add(CPanel);
System.out.println("Chart Added");
Panel1.validate();
Thread.sleep((int)MainWindow.Interval_Combo.getSelectedItem() * 1000);
System.gc();
该线程用于访问这两个类
while(true)
{
MySQLClass m = new MySQLClass();
Thread t1 = new Thread(m);
t1.start();
t1.join();
Graph g = new Graph();
Thread t2 = new Thread(g);
t2.start();
t2.join();
}
在 MySql 类中,我需要获取计数器名称和值,并将其存储在名为 Map_Mysql 的 Hashmap 中,方法如下。
while(rs.next())
{
Map_MySql.put(rs.getString(1), rs.getString(2));
}
我不知道实际问题是什么,请解决这个问题。输出看起来像,
MySql发生
com.mysql.jdbc.JDBC4Connection@2c8ab0
图发生
42913
Ds=org.jfree.data.time.TimeSeriesCollection@c204e809
MySql发生
com.mysql.jdbc.JDBC4Connection@1930b4b
图发生
44217
最后显示图表,其中 Y 轴为最后一个值的浮点值,但没有图形表示。