ich die SceneBuilder bin mit einer Schnittstelle zu entwerfen und verwendet den Code here eine einfache FileChooser einzurichten zu öffnen und anzeigen Bilddateien.JavaFX Image (FXML) dosen't Show/ändern, um die Bilder
Der Code isoliert wurde getestet und Feinarbeiten, versuchte ich es in meine vorhandene Schnittstelle zu integrieren und Fehler hält gerade. Keine Fehlermeldung, nichts. Ich habe angefangen, println
um die Befehle zu setzen und alles "funktioniert".
Hier ist meine GUI, das Design funktioniert bisher (Ich habe gerade angefangen ein VBox
anstelle eines normalen Panel
als alle meine Versuche mit war gescheitert)
<HBox prefHeight="790.0" prefWidth="927.0" style="-fx-background-color: green;">
<children>
<VBox prefHeight="200.0" prefWidth="100.0">
<children>
<ImageView fx:id="iv_main" fitHeight="473.0" fitWidth="462.0" pickOnBounds="true" preserveRatio="true" />
</children>
</VBox>
<VBox prefHeight="790.0" prefWidth="236.0">
<!-- And things inside -->
</VBox>
</children>
</HBox>
Und der Code in der Steuerung - die initializer doesn‘ t irgendein Bild in dieser Version hier anzeigen. Doch wenn ich das gleiche in der Originaldatei nicht funktioniert es:
@FXML
private ImageView iv_main;
//I know this here looks nasty but I tried the path 1:1 in the
//isolated version (even a different project) - but works 100%
private String RESJPG = "/home/qohelet/NetBeansProjects/KV/src/main/resources/fxml/ahok.jpg";
@Override
public void initialize(URL url, ResourceBundle rb) {
/*
* In the original file here are two ObservableLists
* filled successfully. So I can assume the initialize-method works
*/
btn_openFolder.setOnAction(btnLoadEventListener);
try {
FileInputStream input = new FileInputStream(RESJPG);
Image image = new Image(input);
iv_main = new ImageView(image);
} catch (FileNotFoundException|NullPointerException | java.lang.IllegalArgumentException nupo) {
System.err.println(RESJPG + " not found");
}
}
Die Event-Handler arbeiten völlig in Ordnung an diesem Aktionsereignis - aber es tut nichts zur Image:
EventHandler<ActionEvent> btnLoadEventListener
= new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent t) {
System.out.println("Click");
FileChooser fileChooser = new FileChooser();
//Set extension filter
FileChooser.ExtensionFilter extFilterJPG = new FileChooser.ExtensionFilter("Bilddateien", "*.JPG", "*.jpg", "*.jpeg", "*.JPEG", "*.PNG", "*.png");
fileChooser.getExtensionFilters().addAll(extFilterJPG);
//Show open file dialog
File file = fileChooser.showOpenDialog(null);
System.out.println("File: " + file.getAbsolutePath());
try {
BufferedImage bufferedImage = ImageIO.read(file);
Image image = SwingFXUtils.toFXImage(bufferedImage, null);
iv_main.setImage(image);
iv_main.setVisible(true); //In Swing you sometimes had to do that command - but here regardless if inserted or not, no changes
} catch (IOException ex) {
Logger.getLogger(FXMLController.class.getName()).log(Level.SEVERE, null, ex);
}
}
};
Ich bin aus Ideen laufen jetzt ... die Datei korrekt in der Konsole angezeigt wird, halte ich sauber und den Bau des Projekts bewegt, um die Image um so gibt es keine Chance gibt, ist es nur mit einem anderen Objekt bedeckt, aber es gibt keine Änderungen im Ergebnis ...
ich versuche auch, diese beiden Möglichkeiten, um das Bild zu ändern (einmal am start, dann mit der FileChooser
) - noch nichts.
Was mache ich falsch?
(auf die Version Verwandte (com.sun.javafx.runtime.VersionInfo.getRuntimeVersion()
) Ich verwende: 8.0.131-b11)
das war es. Vielen Dank, Problem gelöst – Qohelet