0

Update question[Update]*: * - in the code Termometr shows 0 - screen

Why I can't insert variable temp from DBData.java in to final DefaultValueDataset dataset = new DefaultValueDataset(new Double(temp)); in Tempo.java [ I want to place it in the dataset, I want plot chart like termometr with value of temp from DBData.java ]

I know that in DBData.java in void ConnectDB() TemperaturaPow is String so I parse it to double. I tried parse temp to integer but without result.

In Tempo.java I can use System.out.println(dbData.temp) and IDEA shows me for example 9.0 but JFreeChart Termometr is showing value "0" zero

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();
    }

}

[Update]*

I added try in DBData.java to check does it parse to 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 prints for me :

7.7 7.7 But thermometr can't draw - it receive null or 0 ?

TomaszBag
  • 1
  • 4
  • 1
    Possible duplicate of [*Changing mercury color in thermometer in JFreeChart*](http://stackoverflow.com/q/7597015/230513). – trashgod Feb 23 '17 at 21:59
  • [link](http://stackoverflow.com/questions/21291386/java-swing-passing-variables-to-jfreechart-class) this is similar topic but I don't understand it :/ question is why `DefaultValueDataset dataset` in Tempo.java can't take variable `temp` from other class and draw chart/show temperature in termometr - termometr shows 0 :) – TomaszBag Feb 25 '17 at 16:07

1 Answers1

0

Solution for this example is :

In DBData.java, we have method which take data from MySQL = ConnectDB(). This method must be public double ConnectDB() and this method must return variable temp:

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

In class where I have code to draw chart we need to :

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

and then we can insert variable temp into dataset

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

Working JFreeChart like thermometer screen of working chart

trashgod
  • 203,806
  • 29
  • 246
  • 1,045
TomaszBag
  • 1
  • 4