Bagaimana cara memasukkan Variabel dari satu kelas ke kelas dengan JFreeChart untuk memplot variabel ini?

Perbarui pertanyaan[Pembaruan]*: * - dalam kode Termometr menunjukkan 0 - layar

Mengapa saya tidak bisa memasukkan variabel temp dari DBData.java ke final DefaultValueDataset dataset = new DefaultValueDataset(new Double(temp)); di Tempo.java [ Saya ingin meletakkannya di dataset, saya ingin diagram plot seperti termometr dengan nilai temp dari DBData.java ]

Saya tahu bahwa di DBData.java di void ConnectDB() TemperaturaPow ada String jadi saya menguraikannya menjadi dua kali lipat. Saya mencoba mengurai temp ke integer tetapi tidak ada hasil.

Di Tempo.java saya dapat menggunakan System.out.println(dbData.temp) dan IDEA menunjukkan kepada saya misalnya 9.0 tetapi JFreeChart Termometr menunjukkan nilai "0" nol

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

}

[Memperbarui]*

Saya menambahkan coba di DBData.java untuk memeriksa apakah parsingnya menjadi dua kali lipat.

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 mencetak untuk saya:

7.7 7.7 Namun termometer tidak dapat menggambar - ia menerima nol atau 0 ?


person TomaszBag    schedule 23.02.2017    source sumber
comment
Kemungkinan duplikat Mengubah warna merkuri pada termometer di JFreeChart.   -  person trashgod    schedule 24.02.2017
comment
tautan ini topik yang mirip tetapi saya tidak memahaminya :/ Pertanyaannya mengapa DefaultValueDataset dataset di Tempo.java tidak dapat mengambil variabel temp dari kelas lain dan menggambar grafik/menunjukkan suhu di termometr - termometr menunjukkan 0 :)   -  person TomaszBag    schedule 25.02.2017


Jawaban (1)


Solusi untuk contoh ini adalah:

Di DBData.java, kami memiliki metode yang mengambil data dari MySQL = ConnectDB(). Metode ini harus public double ConnectDB() dan metode ini harus mengembalikan variabel temp:

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

Di kelas di mana saya memiliki kode untuk menggambar grafik kita perlu:

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

dan kemudian kita bisa memasukkan variabel temp ke dalam dataset

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

Bekerja JFreeChart seperti termometer layar bagan kerja

person TomaszBag    schedule 25.02.2017