无法在ObservableList中设置对象的属性

时间:2016-03-25 13:05:47

标签: java collections javafx java-8 observablelist

在我的主类中,我初始化一个静态对象(lkw),它包含公共ObservableList(ladung)。现在我想操作列表中的数据,其中包含Methode ergebniss,它位于Methoden类中。我在我的JavaFx Gui中调用了methode ergebniss。它不起作用。我没有收到错误,但X属性为空。删除元素(Main.lkw.ladung.remove(j))也不起作用。 我做错了什么?

修改

代码 Class Main

public class Main extends Application{
public static Lkw lkw=new Lkw();

public static void main(String[] args) {
    javafx.application.Application.launch(Gui.class);
}

@Override
public void start(Stage primaryStage) throws Exception {
    // TODO Auto-generated method stub

}

Class Lkw

public class Lkw {
private String name="";
private int länge=0;
private int breite=0;
private int höhe=0;
public ObservableList<Ladung> ladung=FXCollections.observableArrayList();

public Lkw(String name, int länge, int breite, int höhe){
    this.name=name;
    this.länge=länge;
    this.breite=breite;
    this.höhe=höhe;
}

public String getName(){
    return name;
}

public void setName(String name){
    this.name=name;
}

public int getLänge() {
    return länge;
}

public void setLänge(int länge) {
    this.länge = länge;
}

public int getBreite() {
    return breite;
}

public void setBreite(int breite) {
    this.breite = breite;
}

public int getHöhe() {
    return höhe;
}

public void setHöhe(int höhe) {
    this.höhe = höhe;
}

public ObservableList<Ladung> getLadung() {
    return ladung;
}

public void setLadung(ObservableList<Ladung> ladung) {
    this.ladung = ladung;
}

班拉丹

public class Ladung {
private int nr;
private int länge = 0;
private int breite = 0;
private int höhe = 0;
private int x = 0;
private int y = 0;
private int z = 0;
private int raum = 0;
private Rectangle farbe = new Rectangle(100, 50);

public Ladung(int nr, int länge, int breite, int höhe) {
    this.nr = nr;
    this.länge = länge;
    this.breite = breite;
    this.höhe = höhe;
    this.farbe.setFill(new Color(Math.random(), Math.random(), Math.random(), 1));
}

public Ladung(int nr, int länge, int breite, int höhe, int raum, int x, int y, int z, Rectangle farbe) {
    this.nr = nr;
    this.länge = länge;
    this.breite = breite;
    this.höhe = höhe;
    this.raum = raum;
    this.x = x;
    this.y = y;
    this.z = z;
    this.farbe=farbe;
}

public int getLänge() {
    return länge;
}

public void setLänge(int länge) {
    this.länge = länge;
}

public int getBreite() {
    return breite;
}

public void setBreite(int breite) {
    this.breite = breite;
}

public int getHöhe() {
    return höhe;
}

public void setHöhe(int höhe) {
    this.höhe = höhe;
}

public int getX() {
    return x;
}

public void setX(int x) {
    this.x = x;
}

public int getY() {
    return y;
}

public void setY(int y) {
    this.y = y;
}

public int getZ() {
    return z;
}

public void setZ(int z) {
    this.z = z;
}

public int getNr() {
    return nr;
}

public void setNr(int nr) {
    this.nr = nr;
}

public int getRaum() {
    return raum;
}

public void setRaum(int raum) {
    this.raum = raum;
}

public Rectangle getFarbe() {
    return farbe;
}

public void setFarbe(Rectangle farbe) {
    this.farbe = farbe;
}

这是带有一些静态方法的类

public class Methoden {
public static int einlesen(String pfad) {
    int ret=0;
    String zeile = "";
    String[] daten = null;
    FileReader fr = null;
    try {
        fr = new FileReader(pfad);
        BufferedReader br = new BufferedReader(fr);
        zeile = br.readLine();
        daten = zeile.split(" ");
        Main.lkw.setLänge(Integer.valueOf(daten[1]));
        Main.lkw.setBreite(Integer.valueOf(daten[2]));
        Main.lkw.setHöhe(Integer.valueOf(daten[3]));
        zeile = br.readLine();
        int j=0;
        while (zeile != null) {
            daten = null;
            daten = zeile.split(" ");
            Main.lkw.ladung.get(j).setX(Integer.valueOf(daten[5]));
            Main.lkw.ladung.get(j).setY(Integer.valueOf(daten[6]));
            Main.lkw.ladung.get(j).setZ(Integer.valueOf(daten[7]));
            Main.lkw.ladung.get(j).setRaum(Integer.valueOf(daten[4]));

            zeile = br.readLine();
        }
        br.close();
        fr.close();
        if(Main.lkw.getLadung().size()==0){
            ret=-1;
        }
        for(int i=0;i<Main.lkw.getLadung().size();i++){
            System.out.println(Main.lkw.getLadung().get(i));
            System.out.println(Main.lkw.getLadung().get(i).getRaum());
            if(Main.lkw.getLadung().get(i).getRaum()!=1){
                ret=-1;
                System.out.println("achtung!!!!");
            }
        }
    } catch (IOException e) {
        System.err.println(e.getMessage() + " " + e.getClass());
    }
    return ret;
}

我从JavaFx Gui类中调用了methode ergebniss。

0 个答案:

没有答案