Wie kann ich ein Bild mit der Bildansicht Komponente in javafx und fxml?
Ich nehme an, es ist eine sehr einfache Sache, aber ich bekomme einfach nicht dahinter.
Alles was ich will ist, zu zeigen, ein Bild über eine Bildansicht verbunden mit fxml.
Hier ist mein code:
package application;
import java.io.File;
import javafx.application.Application;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.AnchorPane;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
public class Main extends Application
{
@FXML
private ImageView imageView;
@Override
public void start(Stage primaryStage)
{
try
{
AnchorPane root = (AnchorPane)FXMLLoader.load(getClass().getResource("Sample.fxml"));
Scene scene = new Scene(root,400,400);
scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
primaryStage.setTitle("Hello World");
File file = new File("src/Box13.jpg");
Image image = new Image(file.toURI().toString());
imageView = new ImageView(image);
//root.getChildren().add(imageView);
primaryStage.setScene(scene);
primaryStage.show();
} catch(Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
launch(args);
}
}
Und meine fxml-Datei
<?xml version="1.0" encoding="UTF-8"?>
<?import java.lang.*?>
<?import javafx.scene.image.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.layout.AnchorPane?>
<AnchorPane prefHeight="316.0" prefWidth="321.0" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/2.2" fx:controller="application.SampleController">
<children>
<ImageView fx:id="imageView" fitHeight="150.0" fitWidth="200.0" layoutX="61.0" layoutY="83.0" pickOnBounds="true" preserveRatio="true" >
</ImageView>
</children>
</AnchorPane>
Sollte es keine problem mit der Datei verknüpfen, wie es funktioniert, wenn ich den outcommented Linie. Das wäre so, wie es in java erfolgt nur, aber ich will fxml hier bin ich mit fxml für alle anderen Komponenten, aber es funktioniert einfach nicht für die Bildansicht und ich weiß nicht, warum. Ich habe auch versucht, erstellen Sie eine neue controller-Klasse und verknüpfen Sie die Bildansicht es aber, dass weder funktioniert. Kann mir jemand helfen?
Dank
InformationsquelleAutor user3472050 | 2014-03-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie verwenden möchten, FXML, sollten Sie separate controller (wie Sie Taten mit der SampleController). Dann ist dein
fx:controller
in deinem FXML sollte darauf hinweisen, dass.Wahrscheinlich fehlen Ihnen die
initialize
Methode im controller, die Teil derInitializable
- Schnittstelle. Diese Methode wird aufgerufen, nachdem die FXML geladen wird, so empfehle ich Ihnen, um Ihr Bild dort.Ihre
SampleController
Klasse muss so etwas sein:Ich hier getestet und es funktioniert.
InformationsquelleAutor Fernando Paz
Brauchen Sie keinen Initialisierer, es sei denn, Sie sind dynamisch laden ein anderes Bild, jedes mal. Ich denke, so viel wie möglich in fxml ist besser organisiert. Hier ist eine fxml-Datei, die das tut, was Sie brauchen.
Angabe der backgroundLoading Eigenschaft im Image-tag ist optional, Standard ist false. Es ist am besten, backgroundLoading wahr, wenn es eine Weile dauert, oder länger, laden Sie das Bild, so ein Platzhalter wird verwendet, bis das Bild geladen, und das Programm wird nicht einfrieren, während der Belastung.
InformationsquelleAutor Aaron Zimmerman
InformationsquelleAutor sabracadabra
Finden Sie unter Beispiel zu load image mit JavaFX.
Erstellen Sie ein Quell-Ordner mit dem Namen Bild in Ihr Projekt und fügen Sie Ihre Bild, um den Ordner sonst kann man direkt laden-image von der externen URL wie folgt zusammen.
Image img = new Image("http://mikecann.co.uk/wp-content/uploads/2009/12/javafx_logo_color_1.jpg");
InformationsquelleAutor Ranjitsinh
Es ist empfehlenswert, das Bild in die Ressourcen, als Sie verwenden können Sie es wie folgt:
InformationsquelleAutor stuckhelper
src/sample/images/shopp.png
InformationsquelleAutor veysel sarı
Bild imProfile = new Image(getClass().getResourceAsStream("/img/profile128.png"));
Bildansicht profileImage=neue Bildansicht(imProfile);
in einer javafx-maven:
InformationsquelleAutor Nelson Rodriguez