I would like to embedd a video in my JavaFx 2.x scene and also resize it and relocate it to my needs. The problem I'm having is following. If I build a MediaView
component and then translate X or Y coordinate, then the whole view is being properly moved like so:
MediaView mv = (...)
mv.setTranslateX(200);
mv.setTranslateY(200);
I could do a similar transformation with scaling property:
MediaView mv = (...)
mv.setScaleX(2);
mv.setScaleY(2);
which will properly scale mv
instance two times in dimension.
However, the problem is when I combine those two translations. The mv
instance is being scaled but it always ends up in screen coordinates (0,0)
. This is of course incorrect behavior from my perspective.
I have also tried to wrap my MediaView
component within some wrapper node, like Group
and perform translations on this element. The behavior is the same.
How can I properly move and scale MediaView
component at the same time?
Edit:
Here is my code, although I'm using here ImageView
. This is irrelevant, however. After running this code, image will be placed at (0,0)
instead of (100,100)
.
@Override
public void start(Stage stage) throws Exception {
Group root = new Group();
// Img's dimension is 200x200
javafx.scene.image.Image img = new javafx.scene.image.Image("/home/bachman/projects/cs-player/src/main/resources/content.png");
ImageView iv = new ImageView(img);
root.getChildren().add(iv);
// Move Image View
iv.setTranslateX(100);
iv.setTranslateY(100);
// Scale Image View
iv.setScaleX(2.0);
iv.setScaleY(2.0);
Scene scene = new Scene(root);
stage.setWidth(600);
stage.setHeight(600);
stage.setScene(scene);
stage.show();
}