2016-05-11 16 views
0

Wenn ich den Status des Objekts in einer Liste aktualisiere, sollte sich ein Symbol im listCell-Objekt in einer ListView ändern. Der Fortschritt und ok png funktioniert wie es sollte, aber wenn Sie zu einem anderen png wechseln, wird das listCell-Objekt entfernt.Listcell verschwindet beim Aktualisieren des Abbilds

Sagen wir, der Status wechselt von Fortschritt zu kritisch, dann wird die Listenzelle entfernt, aber stattdessen wird ok.png verwendet, dann wird sie nicht entfernt. Es scheint also etwas mit den Bildern zu sein.

critical pictue

ok picture

package MMaaSCollector.windows; 

import java.io.IOException; 

import MMaaSCollector.Log; 
import MMaaSCollector.systems.Host; 
import javafx.fxml.FXML; 
import javafx.fxml.FXMLLoader; 
import javafx.scene.control.Label; 
import javafx.scene.image.Image; 
import javafx.scene.image.ImageView; 
import javafx.scene.layout.AnchorPane; 

public class HostCellData { 

@FXML private AnchorPane bg; 
@FXML private Label displayName; 
@FXML private Label type; 
@FXML private ImageView status = new ImageView(); 

public HostCellData() 
{ 
    FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/MMaaSCollector/windows/HostListCell.fxml")); 
    fxmlLoader.setController(this); 
    try 
    { 
     fxmlLoader.load(); 
    } 
    catch (IOException e) 
    { 
     throw new RuntimeException(e); 
    } 
} 

public void setInfo(Host host, double width) { 
    displayName.setText(host.getDisplayName()); 
    type.setText(host.getType()); 
    bg.setPrefWidth(width-17.0-17.0); 

    if (host.isStatusGathering()) { 
     Image progress = new Image("/MMaaSCollector/images/progress.gif"); 
     status.setImage(progress); 
     Log.debugInfo(host.getDisplayName() + " has progress indicator.", 96); 
    } else if (host.isStatusFailed()) { 
     Image failed = new Image("/MMaaSCollector/images/fail.png"); 
     status.setImage(failed); 
     Log.debugInfo(host.getDisplayName() + " has failed indicator.", 96); 
    } else if (host.isStatusOK()) { 
     Image ok = new Image("/MMaaSCollector/images/ok.png"); 
     status.setImage(ok); 
     Log.debugInfo(host.getDisplayName() + " has ok indicator.", 96); 
    } else if (host.isStatusInfo()) { 
     Image info = new Image("/MMaaSCollector/images/info.png"); 
     status.setImage(info); 
     Log.debugInfo(host.getDisplayName() + " has info indicator.", 96); 
    } else if (host.isStatusLow()) { 
     Image low = new Image("/MMaaSCollector/images/low.png"); 
     status.setImage(low); 
     Log.debugInfo(host.getDisplayName() + " has low indicator.", 96); 
    } else if (host.isStatusWarning()) { 
     Image warning = new Image("/MMaaSCollector/images/warning.png"); 
     status.setImage(warning); 
     Log.debugInfo(host.getDisplayName() + " has warning indicator.", 96); 
    } else if (host.isStatusCritical()) { 
     Image critical = new Image("/MMaaSCollector/images/critical.png"); 
     status.setImage(critical); 
     Log.debugInfo(host.getDisplayName() + " critical indicator.", 96); 
    } 
} 

public AnchorPane getBg() { 
    return bg; 
} 
} 
+0

ist das alles der Code? – Elltz

Antwort

0

gefunden, der Grund dafür, warum es nicht funktioniert. Musste das Projekt in Eclipse aktualisieren. Jetzt, wenn die Bilder synchronisiert sind, funktioniert es wie es sollte.

Verwandte Themen