JavaFX - MediaView isPreserveRatio() Method



In JavaFX, the isPreserveRatio() method in the 'MediaView' class is used to retrieve whether the aspect ratio of the media content is preserved when it is scaled to fit within the MediaView.

If the preserveRatioProperty is set to be 'true', the media will be scaled in a such a way that its width-to-height ratio remains constant.

Syntax

Following is the syntax of the 'isPreserveRatio()' method of 'MediaView' class −

public final boolean isPreserveRatio()

Parameters

This method doesn't take any parameters.

Return value

This method returns a boolean value indicating whether the aspect ratio of the media content is preserved (true) or not (false).

Example 1

Following is a basic example demonstrating the isPreserveRatio() method of 'MediaView' class −

In this example, we set the 'preserveRatio' to true to ensure that the aspect ratio of the media is preserved when displayed in the MediaView. We use the isPreserveRatio() method to check whether the aspect ratio is preserved or not.

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.Group;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javafx.scene.media.MediaView;
import javafx.stage.Stage;
import java.io.File;
public class PreserveRatioExample extends Application {
   @Override
   public void start(Stage stage) {
      File mediaPath = new File("./audio_video/sampleTP.mp4");
      Media media = new Media(mediaPath.toURI().toString());
      MediaPlayer mediaPlayer = new MediaPlayer(media);

      mediaPlayer.play();
      // Create the MediaView and set preserve ratio
      MediaView mediaView = new MediaView(mediaPlayer);
      // This will preserve the aspect ratio of the media
      mediaView.setPreserveRatio(true); 

      boolean isRatioPreserved = mediaView.isPreserveRatio();
      System.out.println("Is aspect ratio preserved? "+ isRatioPreserved);

      // Add MediaView to the scene
      Group root = new Group(mediaView);
      Scene scene = new Scene(root, 550, 270);
      stage.setScene(scene);
      stage.setTitle("Preserve Ratio Example");
      stage.show();
   }
   public static void main(String[] args) {
      launch(args);
   }
}

Output

Following is the output of the code −

Is preservation
Is aspect ratio preserved? true

Example 2

In this example, we retrieve the value of the isPreserveRatio() method in the VBox. We use a conditional statement to check if the value is true. If true, we display the content within the "if" block. Otherwise, we execute the "else" block.

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.Group;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javafx.scene.media.MediaView;
import javafx.scene.control.Label;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
import java.io.File;

public class PreserveRatioExample extends Application {
   @Override
   public void start(Stage stage) {
      File mediaPath = new File("./audio_video/sampleTP.mp4");
      Media media = new Media(mediaPath.toURI().toString());
      MediaPlayer mediaPlayer = new MediaPlayer(media);

      mediaPlayer.play();
      
      // Create the MediaView and set preserve ratio
      MediaView mediaView = new MediaView(mediaPlayer);
      mediaView.setFitHeight(240);
      mediaView.setFitWidth(480);
      // This will preserve the aspect ratio of the media
      mediaView.setPreserveRatio(true); 

      boolean isRatioPreserved = mediaView.isPreserveRatio();

      // Create a VBox to hold the label and MediaView
      VBox root = new VBox();      
      // Use String.valueOf to convert boolean to String
      Label preserveLabel = new Label();
      if(isRatioPreserved) {
         preserveLabel.setText("Aspect ratio preserved");
      } else {
         preserveLabel.setText("Aspect ratio is not preserved");
      }
      root.getChildren().addAll(mediaView, preserveLabel);

      Scene scene = new Scene(root, 550, 270);
      stage.setScene(scene);
      stage.setTitle("Preserve Ratio Example");
      stage.show();
   }
   public static void main(String[] args) {
      launch(args);
   }
}

Output

Following is the output of the code −

ispreserveratio1
Advertisements