JavaFx obraz z dysku

0

Napisałem kod i niestety nie działa .Mianowicie chcę wyświetlić obraz(jpg) z dysku za pomocą JavaFx i stworzonym w ScenBulder fxml-u ,nie wiem jak to ugryźć.
Zastanawiam się czy musze w swingu to zrobić a jeśli ta to jak wyświetlić obraz w Imageviwer w gotowym szablonie. Jestem po technikum Informatycznym poznałem podstawy javy , przerobiłem ćwiczenia praktyczne i praktyczny kurs,a to początek drogi i wiele nie rozumiem .Szukałem na różnych stronach lecz temat javaFx jest dość skąpo poruszany .

 package sample;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;

public class Main extends Application {
    @Override
    public void start(Stage primaryStage) throws Exception{
        Parent root = FXMLLoader.load(getClass().getResource("sample.fxml"));
        Scene scene = new Scene(root, 400, 400);
        primaryStage.setTitle("Image");
        primaryStage.setScene(scene);
        primaryStage.show();
    }
    public static void main(String[] args) {
        launch(args);
    }
}

Controller.java

package sample;
import java.io.*;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.image.*;
public class  Controller implements Initializable {
   
    @FXML
    public ImageView Image2, Image1;
    public  Image image;
    @Override
    public void initialize(URL location, ResourceBundle resources) {

        try {
            File file =new File("C:\\Users\\Kacper\\Pictures\\Bez tytułu4.jpg");
                 if(file.isFile()){
                     System.out.println("Obraz"+file.getAbsolutePath()+"istnieje");}//narazie bez obsługi bledu
            InputStream fis = new FileInputStream(file);
            Image image = new Image(fis);
            Image2=new ImageView();
            Image2.setImage(image);
            System.out.println("Wczytanie obrazu ukonczone");
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }} 

sample.fxml

<?xml version="1.0" encoding="UTF-8"?>

        <?import javafx.scene.image.*?>
        <?import java.lang.*?>
        <?import javafx.scene.control.*?>
        <?import javafx.scene.layout.*?>


<Pane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="sample.Controller">
<children>
    <ImageView fx:id="Image1" fitHeight="150.0" fitWidth="200.0" layoutX="40.0" layoutY="110.0" pickOnBounds="true" smooth="false" />
    <ImageView fx:id="Image2" fitHeight="150.0" fitWidth="200.0" layoutX="331.0" layoutY="133.0" pickOnBounds="true" preserveRatio="true">
        <image>
            <Image url="http://4programmers.net/store/_a/5032ae4953426.png" />
        </image>
    </ImageView>
</children>
</Pane>
 
0
Kacpper napisał(a):

Szukałem na różnych stronach lecz temat javaFx jest dość skąpo poruszany .

( ͡° ͜ʖ ͡°) yhy....
wystarczy wpisać w google: "javafx8 image" i masz całe dwie pierwsze strony jak to zrobić. No ale... widocznie w technikum nie uczyli jak korzystać z google.. nie?

0

Spróbowałam zrobić to samo w JavaFX Scene Builder, działa bez problemu. Dodaj sobie kontrolkę ImageView i wskaż plik. U mnie wyszło coś takiego:

<AnchorPane maxHeight="-1.0" maxWidth="-1.0" prefHeight="-1.0" prefWidth="-1.0" VBox.vgrow="ALWAYS">
	<children>
        	<ImageView fitHeight="150.0" fitWidth="200.0" layoutX="201.0" layoutY="114.0" pickOnBounds="true" preserveRatio="true">
			<image>
				<Image url="@../Pictures/252885_2138117653682_3427444_n.jpg" />
			</image>
		</ImageView>
	</children>
</AnchorPane>
0

Kę jesteś naprawdę pomocny .Szukałem w docs.oracle.com ale nie znalazłem jedynie to co jest w kodzie (ImageView(Image(InputStream ))).To gdzie sie uczyłem i co przerobiłem napisałem żeby nie przeczytać odpowiedzi na wyższym poziomie niż jestem w stanie zrozumieć .Zapomniałem dodać ze chodzi mi o ładowanie obrazu za pomocą Controller.java Nie wiem dlaczego Image2 w controller nie jest przypisane do Image 2 w fxml-u.Zauważyłem jedynie ze po wielu próbach do kodu wkradł się błąd z oznaczeniem Image2 a Image1 który dodałem aby sprawdzić czy bezpośrednio z strony obraz sie ładuje .

1 użytkowników online, w tym zalogowanych: 0, gości: 1