gpt4 book ai didi

JavaFX : Subtracting from DoubleProperty

转载 作者:行者123 更新时间:2023-11-30 06:44:15 26 4
gpt4 key购买 nike

我目前正在开发一个使用 JavaFX 播放视频的应用程序。我想将音量 slider 放置在边框 Pane 的右侧。目前,应用程序将调整大小以适应窗口的大小,该窗口将与我的音量 slider 重叠。

我有一个 Controller ,负责处理应用程序执行的所有操作并实现Initialized 接口(interface)。这是我的initialize() 方法的样子。

@Override
public void initialize(URL locate, ResourceBundle resources){

String path = new File("src/media/dance.mp4").getAbsolutePath();
media = new Media (new File (path).toURI().toString());
player = new MediaPlayer(media);
mediaView.setMediaPlayer(player);

DoubleProperty width = mediaView.fitWidthProperty();
DoubleProperty height = mediaView.fitHeightProperty();

width.bind(Bindings.selectDouble(mediaView.sceneProperty(), "width"));
height.bind(Bindings.selectDouble(mediaView.sceneProperty(), "height"));

volumeSlider.setValue(player.getVolume() * 100);
volumeSlider.valueProperty().addListener(new InvalidationListener() {

@Override
public void invalidated(Observable observable) {
player.setVolume(volumeSlider.getValue() / 100);
}

});
}

我尝试在 mediaView.fitWidthProperty() 之后直接减去 64px和mediaView.sceneProperty() ,但都给了我一个错误,因为它们不是 double 类型。我试过mediaView.fitWidthProperty().subtract(64) ,但它说我需要将数据类型从 DoubleProperty 更改为 DoubleBind,这与 Bindings.selectDouble() 不兼容需要 DoubleProperty 的方法。

我怎样才能让它发挥作用?

最佳答案

已编辑

还有更简单的方法!只需直接绑定(bind)到属性即可:

mediaView.fitWidthProperty().bind(
mediaView.getScene().widthProperty().subtract(64));

这是一个完整的应用程序来演示:

public class FXWidthBind extends Application {

@Override
public void start(Stage stage) {
Media media = new Media("http://i.imgur.com/OJTwZuc.mp4");
MediaPlayer player = new MediaPlayer(media);
MediaView mediaView = new MediaView(player);

Pane root = new Pane();
Scene scene = new Scene(root);

root.getChildren().add(mediaView);
stage.setWidth(1000);
stage.setHeight(800);
stage.setScene(scene);
stage.show();

mediaView.fitWidthProperty().bind(mediaView.getScene().widthProperty().subtract(64));
mediaView.fitHeightProperty().bind(mediaView.getScene().heightProperty());
}

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

关于JavaFX : Subtracting from DoubleProperty,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43926701/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com