Affichage de l'image JavaFX8

1. Spécifications

  1. Une fois exécuté, une fenêtre s'ouvre.
  2. Dans l'état initial, l'image n'est pas affichée et seul le bouton d'affichage peut être enfoncé.
  3. Lorsque vous appuyez sur le bouton d'affichage, l'image s'affiche et vous ne pouvez appuyer que sur le bouton Masquer.
  4. Si vous appuyez sur le bouton Masquer, l'image sera masquée et vous ne pourrez appuyer que sur le bouton Afficher.

2. Structure des fichiers

Créez un projet dans Eclipse.

imageView ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ (1) └ src ・ ・ ・ ・ ・ ・ ・ ・ (2) ├ test.jpg ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ (3) └ visionneuse ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ (4) ├ Main.java ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ (5) ├ MainController.java ・ ・ ・ ・ (6) └ écran.fxml ・ ・ ・ ・ ・ ・ ・ ・ (7)

(1) Projet à créer (2) Répertoire du fichier source créé arbitrairement lors de la création d'un projet (3) Image de test (4) Package à créer (5) Fichier source (décrit dans le chapitre suivant) (6) Fichier source (décrit dans le chapitre suivant) (7) Fichier source (décrit dans le chapitre suivant, créé par SceneBuilder)

3. Code source

3.1. Main.java

Main.java


package viewer;

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) {
		try {
			//Chargement des graphiques de scène depuis FXML
			FXMLLoader loader = new FXMLLoader(getClass().getResource("screen.fxml"));//screen.Placer fxml dans le même package
			Parent root = loader.load();

			//Création d'une scène avec le nœud racine du jeu de graphes de scènes
			Scene scene = new Scene(root, 600, 400);
			//Mise en scène de la scène
			primaryStage.setScene(scene);
			primaryStage.setTitle("Viewer");
			primaryStage.show();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public static void main(String[] args) {
		launch(args);
	}
}

3.2. MainController.java

MainController.java


package viewer;

import java.net.URL;
import java.util.ResourceBundle;

import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.Button;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;

public class MainController {

	@FXML
	private ResourceBundle resources;

	@FXML
	private URL location;

	@FXML
	private ImageView img;

	@FXML
	private Button imgDisplayButton;

	@FXML
	private Button imgHideButton;

	@FXML
	void initialize() {
		assert img != null : "fx:id=\"img\" was not injected: check your FXML file 'screen.fxml'.";
		assert imgDisplayButton != null : "fx:id=\"imgDisplayButton\" was not injected: check your FXML file 'screen.fxml'.";
		assert imgHideButton != null : "fx:id=\"imgHideButton\" was not injected: check your FXML file 'screen.fxml'.";

        //(1),(2)Activez l'un et commentez l'autre

        //(1)Lors de la spécification d'une image par URL-----------------------------------------------
		//String url="http://example.com/sample.jpg ";
		//Image image = new Image(url);
        //---------------------------------------------------------------------

        //(2)Lors de la spécification d'une image dans un fichier-------------------------------------------
		Image image = new Image("test.jpg ");//test.Placer jpg directement sous src
        //---------------------------------------------------------------------

		img.setImage(image);
		img.setVisible(false);
		imgHideButton.setDisable(true);
		imgDisplayButton.setDisable(false);
	}

	@FXML
	public void OnclickedImgDisplayButton(ActionEvent event) {
		img.setVisible(true);
		imgDisplayButton.setDisable(true);
		imgHideButton.setDisable(false);
	}

	@FXML
	public void OnclickedImgHideButton(ActionEvent event) {
		img.setVisible(false);
		imgHideButton.setDisable(true);
		imgDisplayButton.setDisable(false);
	}

}

3.3. screen.fxml

screen.fxml


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

<?import javafx.scene.control.Button?>
<?import javafx.scene.image.ImageView?>
<?import javafx.scene.layout.Pane?>
<?import javafx.scene.text.Font?>

<Pane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="viewer.MainController">
   <children>
      <Button fx:id="imgHideButton" layoutX="86.0" layoutY="341.0" mnemonicParsing="false" onAction="#OnclickedImgHideButton" prefHeight="45.0" prefWidth="124.0" text="Cacher">
         <font>
            <Font size="20.0" />
         </font>
      </Button>
      <Button fx:id="imgDisplayButton" layoutX="384.0" layoutY="341.0" mnemonicParsing="false" onAction="#OnclickedImgDisplayButton" prefHeight="45.0" prefWidth="124.0" text="afficher">
         <font>
            <Font size="20.0" />
         </font>
      </Button>
      <ImageView fx:id="img" fitHeight="330.0" fitWidth="588.0" layoutX="5.0" layoutY="6.0" pickOnBounds="true" preserveRatio="true" />
   </children>
</Pane>

4. Informations complémentaires

Recommended Posts

Affichage de l'image JavaFX8
Afficher une image de chargement dans JavaFX puis afficher une autre image
Afficher le texte en haut de l'image
[Java FX] IllegalArgumentException se produit dans une nouvelle image (chemin)
Mémorandum JavaFx
Afficher l'image de type Mat sur l'interface graphique avec Swing
Affichage terrestre du système de coordonnées équatoriales dans JavaFX 3D (1)