JavaFX8-Bildanzeige

1. Technische Daten

  1. Bei der Ausführung wird ein Fenster geöffnet.
  2. Im Ausgangszustand wird das Bild nicht angezeigt und nur die Anzeigetaste kann gedrückt werden.
  3. Wenn Sie die Anzeigetaste drücken, wird das Bild angezeigt und Sie können nur die Ausblendetaste drücken.
  4. Wenn Sie die Schaltfläche Ausblenden drücken, wird das Bild ausgeblendet und Sie können nur die Schaltfläche Ausblenden drücken.

2. Dateistruktur

Erstellen Sie ein Projekt in Eclipse.

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

(1) Zu erstellendes Projekt (2) Quelldateiverzeichnis, das beim Erstellen eines Projekts willkürlich erstellt wurde (3) Testbild (4) Zu erstellendes Paket (5) Quelldatei (im nächsten Kapitel beschrieben) (6) Quelldatei (im nächsten Kapitel beschrieben) (7) Quelldatei (beschrieben im nächsten Kapitel, erstellt von SceneBuilder)

3. Quellcode

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 {
			//Laden von Szenendiagrammen aus FXML
			FXMLLoader loader = new FXMLLoader(getClass().getResource("screen.fxml"));//screen.Platzieren Sie fxml im selben Paket
			Parent root = loader.load();

			//Erstellen einer Szene mit dem Wurzelknoten des Szenendiagrammsatzes
			Scene scene = new Scene(root, 600, 400);
			//Die Szene auf die Bühne bringen
			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)Aktivieren Sie eines und kommentieren Sie das andere aus

        //(1)Bei der Angabe eines Bildes per URL-----------------------------------------------
		//String url="http://example.com/sample.jpg ";
		//Image image = new Image(url);
        //---------------------------------------------------------------------

        //(2)Beim Angeben eines Bildes in einer Datei-------------------------------------------
		Image image = new Image("test.jpg ");//test.Platziere jpg direkt unter 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="Ausblenden">
         <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="Anzeige">
         <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. Ergänzende Informationen

Recommended Posts

JavaFX8-Bildanzeige
Zeigen Sie ein Ladebild in JavaFX an und zeigen Sie dann ein anderes Bild an
Zeigen Sie Text über dem Bild an
[Java FX] IllegalArgumentException tritt in neuem Image (Pfad) auf
JavaFx-Memorandum
Zeigen Sie mit Swing ein Bild vom Typ Mat auf der GUI an
Erdanzeige des äquatorialen Koordinatensystems in JavaFX 3D (1)