如何使用 JFreeChart 将 Variable 从一个 class 插入 class 来绘制这个变量?

How insert Variable from one class into class with JFreeChart to plot this variable?

更新问题[更新]*: * - 在代码中 Termometr shows 0 - screen

为什么我不能将变量 tempDBData.java 插入到 final DefaultValueDataset dataset = new DefaultValueDataset(new Double(temp)); 到 Tempo.java [我想把它放在数据集中,我想要图表像 DBData.java ]

中值为 temp 的温度计

我知道 DBData.java in void ConnectDB() TemperaturaPow 是字符串,所以我将其解析为双精度。 我尝试将 temp 解析为整数但没有结果。

在 Tempo.java 中我可以使用 System.out.println(dbData.temp) 并且 IDEA 向我显示例如 9.0 但 JFreeChart Termometr 显示值“0”零

Tempo.java

public class Tempo extends ApplicationFrame {

public Tempo(final String title){

    super(title);

    DBData dbData = new DBData();
    final double temp = dbData.temp;

    final DefaultValueDataset dataset = new DefaultValueDataset(new Double(temp)); <<<-------

    final ThermometerPlot plot = new ThermometerPlot(dataset);
    final JFreeChart chart = new JFreeChart("Termometr",JFreeChart.DEFAULT_TITLE_FONT,plot,false);

    plot.setThermometerStroke(new BasicStroke(2.0f));
    plot.setThermometerPaint(Color.lightGray);

    final ChartPanel chartPanel = new ChartPanel(chart);
    setContentPane(chartPanel);
}
public static void main(String[] args){
    DBData dbData = new DBData();
    dbData.ConnectDB();
    final Tempo demo = new Tempo("Thermometr demo");
    demo.pack();
    demo.setVisible(true);
   System.out.println(dbData.temp);

}

}

DBData.java

public class DBData {

    public double temp;
    private Connection con;
    private Statement st;
    private ResultSet rs;

    void ConnectDB(){

        try {
            Class.forName("com.mysql.jdbc.Driver");
            con = DriverManager.getConnection("jdbc:mysql://XXX
                    "passs");
            st = con.createStatement();
            System.out.println("Połączono z BD");

            String query = "SELECT * FROM X ORDER BY id DESC LIMIT 1";
            rs = st.executeQuery(query);
            System.out.println("Records from MySQL");

            while (rs.next()) {
                String TemperaturaPow = rs.getString("TemperaturaPow");
                System.out.println(TemperaturaPow);
                temp = Double.parseDouble(TemperaturaPow); <<<----------
                System.out.println(temp);


            }
        } catch (Exception ex) {
            System.out.println("Error: " + ex);
        }
    }

    void initialize(){
        ConnectDB();
    }

}

[更新]*

我在 DBData.java 中添加了 try 来检查它是否解析为 double。

while (rs.next()) {
                String TemperaturaPow = rs.getString("TemperaturaPow");
                System.out.println(TemperaturaPow);
                temp = Double.parseDouble(TemperaturaPow); <<<----------
                System.out.println(temp);
                try{
                    temp = Integer.parseInt(TemperaturaPow);
                }catch (NumberFormatException e){
                    System.out.println("Error parse: " + e);
                }
Intellji prints for me :

Error parse: java.lang.NumberFormatException: For input string: "7.7"
0.0
0.0
If I use :

try{
                    temp = Double.parseDouble(TemperaturaPow);
                }catch (NumberFormatException e){
                    System.out.println("Error parse: " + e);
                }

Intellji 为我打印:

7.7 7.7 但是温度计无法绘制 - 它接收到 null 或 0 ?

这个例子的解决方案是:

DBData.java中,我们有从MySQL = ConnectDB()中获取数据的方法。 此方法必须 public double ConnectDB() 并且此方法必须 return 变量 temp:

public double DBConnect(){
...code...
return temp;
}

在 class 中,我有绘制图表的代码,我们需要:

DBData dbData = new DBData();
double temp = dbData.ConnectDB();

然后我们可以将变量 temp 插入数据集

   final DefaultValueDataset dataset = new DefaultValueDataset(new Double(temp));

像温度计一样工作JFreeChart