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 ?
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