2012-06-22 54 views
3

我最近发现javafx 2.1对于我制作视频播放器的项目非常有用,但在 成功之后我遇到了视频尺寸尺寸问题。换句话说,当我运行 程序并且视频播放正常时,我看不到整个视频,因为它的尺寸为 大于我的屏幕分辨率。在以下代码中我可以做些什么来调整视频的实际大小windows7 64bit:JavaFx视频尺寸OUT of screen

public class HelloFx extends Application { 

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

    @Override 
    public void start(final Stage stage) throws Exception { 
     stage.setTitle("Movie Player"); 
     final BorderPane root = new BorderPane(); 

     final Media media = new Media("file:///Users//user//Videos//Sintel.mp4"); 
     final MediaPlayer player = new MediaPlayer(media); 
     final MediaView view = new MediaView(player); 

     // System.out.println("media.width: "+media.getWidth()); 
     root.getChildren().add(view); 

     final Scene scene = new Scene(root, 400, 400, Color.BLACK); 


     stage.setScene(scene); 
     stage.show(); 
     player.play(); 
     player.setOnReady(new Runnable() { 
      @Override 
      public void run() { 
       int w = player.getMedia().getWidth(); 
       int h = player.getMedia().getHeight(); 

       stage.setMinWidth(w); 
       stage.setMinHeight(h); 


      } 
     }); 
      //player.play(); 

    } 
} 

回答

7

JavaFX 2 MediaView类有两个功能可以提供帮助。它们是.setFitHeight()和.setFitWidth()。

所以,你可以,而不是让媒体决定屏幕的大小,让你的舞台设置在屏幕的大小...

public void run() { 
       int w = stage.getWidth(); // player.getMedia().getWidth(); 
       int h = stage.getHeight(); // player.getMedia().getHeight(); 

       // stage.setMinWidth(w); 
       // stage.setMinHeight(h); 
       // make the video conform to the size of the stage now... 
       player.setFitWidth(w); 
       player.setFitHeight(h); 


      } 

那么视频应该适合舞台内。上面的代码非常粗糙,你可能想要更好地“缩放”视频,即:找到媒体宽度与舞台宽度的比值&媒体高度与舞台高度......但上面的代码应该让你开始。

+0

非常感谢您的帮助。我会给予+1帮助,但我没有足够的声望。 – PeGiannOS