gpt4 book ai didi

mousemoved 事件中的 Javafx slider 值

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:56:29 24 4
gpt4 key购买 nike

我正在制作一个媒体播放器,并试图在将鼠标悬停在 slider 上时获取光标位置的播放 slider 值。为了做到这一点,我使用了以下内容:

    timeSlider.addEventFilter(MouseEvent.MOUSE_MOVED, event -> System.out.println("hovering"));

每当鼠标在 slider 上改变位置时打印“悬停”。谁能告诉我如何获取当前光标位置的 slider 值?我只能弄清楚如何获取拇指位置的值。

提前致谢。

最佳答案

如果您在 slider 下方显示轴,这里有一点(可能不止一点)有用的 hack。它依赖于通过其 css 类查找轴,将鼠标坐标转换为相对于轴的坐标,然后使用 ValueAxis 中的 API 转换为值:

import javafx.application.Application;
import javafx.geometry.Point2D;
import javafx.scene.Scene;
import javafx.scene.chart.NumberAxis;
import javafx.scene.control.Label;
import javafx.scene.control.Slider;
import javafx.scene.layout.StackPane;
import javafx.stage.Popup;
import javafx.stage.Stage;

public class TooltipOnSlider extends Application {

@Override
public void start(Stage primaryStage) {
Slider slider = new Slider(5, 25, 15);
slider.setShowTickMarks(true);
slider.setShowTickLabels(true);
slider.setMajorTickUnit(5);

Label label = new Label();
Popup popup = new Popup();
popup.getContent().add(label);

double offset = 10 ;

slider.setOnMouseMoved(e -> {
NumberAxis axis = (NumberAxis) slider.lookup(".axis");
Point2D locationInAxis = axis.sceneToLocal(e.getSceneX(), e.getSceneY());
double mouseX = locationInAxis.getX() ;
double value = axis.getValueForDisplay(mouseX).doubleValue() ;
if (value >= slider.getMin() && value <= slider.getMax()) {
label.setText(String.format("Value: %.1f", value));
} else {
label.setText("Value: ---");
}
popup.setAnchorX(e.getScreenX());
popup.setAnchorY(e.getScreenY() + offset);
});

slider.setOnMouseEntered(e -> popup.show(slider, e.getScreenX(), e.getScreenY() + offset));
slider.setOnMouseExited(e -> popup.hide());

StackPane root = new StackPane(slider);
primaryStage.setScene(new Scene(root, 350, 80));
primaryStage.show();

}

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

关于mousemoved 事件中的 Javafx slider 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34036328/

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