fxml null pointer problem fixed

multiple-captors
Nicolas FRANCO 2 years ago
parent 041f038b70
commit ae9c27128c

@ -3,6 +3,9 @@ package launcher;
import javafx.application.Application;
import javafx.stage.Stage;
import model.*;
import view.CapteurView;
import view.ImageCtrlView;
import view.ThermostatView;
import java.io.IOException;
import java.util.Map;
@ -14,22 +17,25 @@ public class Launch extends Application {
@Override
public void start(Stage primaryStage) throws IOException, InterruptedException {
StrategyRandom captorS = new StrategyRandom(1,"Capteur Simple");
CapteurIntervalle captorI = new CapteurIntervalle(2,"Capteur Intervalle",0.0,10.0);
CapteurRealiste captorR = new CapteurRealiste(3,"Capteur Realiste", 5.0, 10.0);
CapteurCPU captorC = new CapteurCPU(4,"Capteur CPU");
UnitCapteur captorI = new UnitCapteur(2,"Capteur Intervalle",new StrategyCPU());
UnitCapteur captorR = new UnitCapteur(3,"Capteur Realiste", new StrategyCPU());
UnitCapteur captorC = new UnitCapteur(4,"Capteur CPU",new StrategyCPU());
CapteurVirtuel captorV = new CapteurVirtuel(5,"CapteurVirtuel");
captorV.addCapteur(captorS,1);
captorV.addCapteur(captorI,1);
captorV.addCapteur(captorC,1);
captorV.addCapteur(captorR,1);
// FXML NOT WORKING
/*Stage thermostatStage = new Stage();
CapteurView capteurView = new ImageCtrlView(captor,"view/Image.fxml","mon titre");
ThermostatView thermostatView = new ThermostatView(captor,"view/Thermostat.fxml","mon titre");
*/
Stage thermostatStage = new Stage();
CapteurView capteurView = new ImageCtrlView(captorV,"view/Image.fxml","mon titre");
for (Map.Entry<CapteurAbstrait, Integer> entry : captorV.getCapteurs().entrySet()) {
CapteurAbstrait c = entry.getKey();
c.genTemp();
}
ThermostatView thermostatView = new ThermostatView(captorV,"view/Thermostat.fxml","mon titre");
//Random random = new Random();
Thread t = new Thread() {

@ -13,7 +13,7 @@ public abstract class CapteurAbstrait {
this.nom = nom;
this.temp.setValue(0.0);
}
//public abstract void genTemp();
public abstract void genTemp();
/* Getters - Setters */
public int getId() {

@ -8,11 +8,11 @@ import java.nio.file.Paths;
public class StrategyCPU implements StrategyCaptor {
@Override
public void genTemp(CapteurAbstrait c) {
public double genTemp() {
try{
String temp = new String(Files.readAllBytes(Paths.get("/sys/class/thermal/thermal_zone0/temp")));
double tempCelsius = Double.parseDouble(temp)/1000.0;
c.setTemp(tempCelsius);
return tempCelsius;
} catch (IOException e) {
throw new RuntimeException(e);
}

@ -1,5 +1,5 @@
package model;
public interface StrategyCaptor {
public void genTemp(CapteurAbstrait c);
public double genTemp();
}

@ -6,8 +6,8 @@ import java.util.Random;
public class StrategyRandom implements StrategyCaptor {
@Override
public void genTemp(CapteurAbstrait c) {
public double genTemp() {
Random random = new Random();
c.setTemp(random.nextInt(30));
return random.nextDouble(30);
}
}

@ -8,7 +8,8 @@ public class UnitCapteur extends CapteurAbstrait{
this.strategie = st;
}
public void contexte(){
this.strategie.genTemp(this);
@Override
public void genTemp() {
strategie.genTemp();
}
}

@ -2,6 +2,7 @@ package view;
import javafx.fxml.FXML;
import javafx.scene.control.Button;
import model.CapteurAbstrait;
import model.StrategyRandom;
import java.io.IOException;
@ -11,14 +12,14 @@ public abstract class CapteurView extends FXMLView {
@FXML
Button myBtn;
protected StrategyRandom capteur;
protected CapteurAbstrait capteur;
public CapteurView(StrategyRandom capteur, String url, String title) throws IOException {
public CapteurView(CapteurAbstrait capteur, String url, String title) throws IOException {
super(url,title);
this.setCapteur(capteur);
}
public void setCapteur(StrategyRandom capteur) {
public void setCapteur(CapteurAbstrait capteur) {
this.capteur = capteur;
}

@ -4,6 +4,7 @@ import javafx.application.Platform;
import javafx.fxml.FXML;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import model.CapteurAbstrait;
import model.StrategyRandom;
import java.io.IOException;
@ -14,11 +15,11 @@ public class ImageCtrlView extends CapteurView{
Class<?> clazz = this.getClass();
InputStream input;
protected StrategyRandom capteur;
protected CapteurAbstrait capteur;
@FXML
ImageView imageview;
public ImageCtrlView(StrategyRandom capteur, String url, String title) throws IOException {
public ImageCtrlView(CapteurAbstrait capteur, String url, String title) throws IOException {
super(capteur,url,title);
this.capteur = capteur;
myBtn.setOnAction(e -> Platform.exit());

@ -4,6 +4,7 @@ import javafx.application.Platform;
import javafx.fxml.FXML;
import javafx.scene.control.Spinner;
import javafx.scene.control.SpinnerValueFactory;
import model.CapteurAbstrait;
import model.StrategyRandom;
import java.io.IOException;
@ -14,18 +15,20 @@ public class ThermostatView extends CapteurView{
@FXML
Spinner<Double> spin;
protected StrategyRandom capteur;
protected CapteurAbstrait capteur;
public ThermostatView(StrategyRandom capteur, String url, String title) throws IOException {
public ThermostatView(CapteurAbstrait capteur, String url, String title) throws IOException {
super(capteur,url,title);
this.capteur=capteur;
this.spin.setValueFactory(new SpinnerValueFactory.DoubleSpinnerValueFactory(0d,100d));
this.spin.getValueFactory().valueProperty().bindBidirectional(this.capteur.getTemp());
SpinnerValueFactory valueFactory = new SpinnerValueFactory.DoubleSpinnerValueFactory(capteur.getTemp().getValue(),capteur.getTemp().getValue(), capteur.getTemp().getValue());
spin.setValueFactory(valueFactory);
myBtn.setOnAction(e -> Platform.exit());
}
public void initialize() {
SpinnerValueFactory valueFactory = new SpinnerValueFactory.DoubleSpinnerValueFactory(capteur.getTemp().getValue(),capteur.getTemp().getValue(), capteur.getTemp().getValue());
spin.setValueFactory(valueFactory);
}
}

Loading…
Cancel
Save