Bonjour tout le monde,
Je débute à peine avec Javafx et j'ai pu trouver un code sur internet qui me permet de charger une image mais sauf que tout est melanger dans le même fichier.
Je vous laisse voir ce code
À present, j'essaie de faire la même chose mais en MVC, pour cela, j'ai séparé ma view (fichier fxml) le controller et ma classe principale
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57 package controllers; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.net.URL; import javafx.application.Application; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.image.Image; import javafx.scene.image.ImageView; import javafx.stage.Stage; public class ImageExample extends Application { @Override public void start(Stage stage) throws FileNotFoundException { //Creating an image try { //final URL imageURL = getClass().getResource("maison.jpg"); Image image = new Image(new FileInputStream("ressources/maison.jpg")); //Setting the image view ImageView imageView = new ImageView(image); //Setting the position of the image imageView.setX(50); imageView.setY(25); //setting the fit height and width of the image view imageView.setFitHeight(455); imageView.setFitWidth(500); //Setting the preserve ratio of the image view imageView.setPreserveRatio(true); //Creating a Group object Group root = new Group(imageView); //Creating a scene object Scene scene = new Scene(root, 600, 500); //Setting title to the Stage stage.setTitle("Loading an image"); //Adding scene to the stage stage.setScene(scene); //Displaying the contents of the stage stage.show(); }catch (Exception e){System.out.println(e.getMessage());} } public static void main(String args[]) { launch(args); } }
à voir :
fic fxml
classe controller
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 <?xml version="1.0" encoding="UTF-8"?> <?import javafx.scene.control.Button?> <?import javafx.scene.control.TextField?> <?import javafx.scene.layout.StackPane?> <?import javafx.scene.image.Image?> <?import javafx.scene.image.ImageView?> <StackPane prefHeight="300" prefWidth="300" xmlns="http://javafx.com/javafx/8.0.121" xmlns:fx="http://javafx.com/fxml/1" fx:controller="controllers.Controller"> <children> <ImageView fitWidth="300" fitHeight="300"> <image > <Image fx:id="img" preserveRatio="true" smooth="true"> </image> </ImageView> <TextField fx:id="txt" /> <Button fx:id="btn" onAction="#direbonjour" prefHeight="0.0" prefWidth="52.0" text="Ajout"> </Button> </children> </StackPane>
Et le classe principale:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53 package controllers; import javafx.application.Application; import javafx.event.ActionEvent; import javafx.fxml.FXML; import javafx.fxml.FXMLLoader; import javafx.fxml.Initializable; import javafx.scene.Parent; import javafx.scene.Scene; import javafx.scene.image.Image; import javafx.scene.control.TextField; import javafx.stage.Stage; import java.awt.*; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.net.URL; import java.util.ResourceBundle; public class Controller implements Initializable { @FXML private TextField txt; @FXML private Image img; public Controller(String url) throws FileNotFoundException { try { img=FXMLLoader.load(getClass().getResource(url)); }catch (Exception e){} } private FileInputStream paht; public void loaderImg()throws FileNotFoundException { paht= new FileInputStream("ressources/maison.jpg"); } public String chemin(){ return "ressources/maison.jpg"; } public void direbonjour(ActionEvent actionEvent) { System.out.println("coucou"); txt.setText("Coucou"); } @Override public void initialize(URL location, ResourceBundle resources) { } }
mon problème, je sais plus comment importer l'image, j'ai tenté un truc du genre
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42 package controllers; import javafx.application.Application; import javafx.fxml.FXMLLoader; import javafx.scene.Parent; import javafx.scene.Scene; import javafx.scene.layout.Pane; import javafx.stage.Stage; import javax.swing.text.html.ImageView; import java.awt.*; import java.io.FileInputStream; import java.io.IOException; import java.net.URL; public class Image extends Application { public void start(Stage primaryStage) { Parent login=null; try { FXMLLoader loader=new FXMLLoader(getClass().getResource("../view/chargerImage.fxml")); //loader.setController(new Controller("ressources/maison.jpg")); login=loader.load(); //login=FXMLLoader.load(getClass().getResource("../view/chargerImage.fxml")); }catch (IOException e){ System.out.println(e.getMessage()); } Scene scene=new Scene(login); primaryStage.setScene(scene); primaryStage.show(); } public static void main(String[] args) { launch(args); } }
dans le constructeur mais je sais à l'avance que ca va pas aller, c'est juste une maniere de vs exprimer ce que je veux faire. Donc comment je peux reussir à importer l'image en voulant le faire que dans le controller le code java et que je dois pas faire img=new Image(FileImputStream(url))....
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 public Controller(String url) throws FileNotFoundException { try { img=FXMLLoader.load(getClass().getResource(url)); }catch (Exception e){} }
Merci d'avance.
Partager