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.application.Application;
import javafx.stage.Stage; import javafx.stage.Stage;
import model.*; import model.*;
import view.CapteurView;
import view.ImageCtrlView;
import view.ThermostatView;
import java.io.IOException; import java.io.IOException;
import java.util.Map; import java.util.Map;
@ -14,22 +17,25 @@ public class Launch extends Application {
@Override @Override
public void start(Stage primaryStage) throws IOException, InterruptedException { 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); UnitCapteur captorI = new UnitCapteur(2,"Capteur Intervalle",new StrategyCPU());
CapteurRealiste captorR = new CapteurRealiste(3,"Capteur Realiste", 5.0, 10.0); UnitCapteur captorR = new UnitCapteur(3,"Capteur Realiste", new StrategyCPU());
CapteurCPU captorC = new CapteurCPU(4,"Capteur CPU"); UnitCapteur captorC = new UnitCapteur(4,"Capteur CPU",new StrategyCPU());
CapteurVirtuel captorV = new CapteurVirtuel(5,"CapteurVirtuel"); CapteurVirtuel captorV = new CapteurVirtuel(5,"CapteurVirtuel");
captorV.addCapteur(captorS,1);
captorV.addCapteur(captorI,1); captorV.addCapteur(captorI,1);
captorV.addCapteur(captorC,1); captorV.addCapteur(captorC,1);
captorV.addCapteur(captorR,1); captorV.addCapteur(captorR,1);
// FXML NOT WORKING // FXML NOT WORKING
/*Stage thermostatStage = new Stage(); Stage thermostatStage = new Stage();
CapteurView capteurView = new ImageCtrlView(captor,"view/Image.fxml","mon titre"); CapteurView capteurView = new ImageCtrlView(captorV,"view/Image.fxml","mon titre");
ThermostatView thermostatView = new ThermostatView(captor,"view/Thermostat.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(); //Random random = new Random();
Thread t = new Thread() { Thread t = new Thread() {

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

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

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

@ -6,8 +6,8 @@ import java.util.Random;
public class StrategyRandom implements StrategyCaptor { public class StrategyRandom implements StrategyCaptor {
@Override @Override
public void genTemp(CapteurAbstrait c) { public double genTemp() {
Random random = new Random(); 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; this.strategie = st;
} }
public void contexte(){ @Override
this.strategie.genTemp(this); public void genTemp() {
strategie.genTemp();
} }
} }

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

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

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

Loading…
Cancel
Save