如何用ControlFX RangeSlider高亮JavaFX窗口指定整段区域
JavaFX中如何通过RangeSlider实现窗口区域的范围高亮?
我正在开发JavaFX波形生成器项目,已完成大部分功能,但不知道怎么用ControlFX的RangeSlider实现选中范围对应下方整个窗口区域的高亮效果——这类效果常见于音频处理软件。之前的提问因未及时提交最小可复现示例被关闭,现在重新提交带完整示例的问题,求JavaFX中的最优实现方案。
最小可复现示例
Main.java
package application; import javafx.application.Application; import javafx.fxml.FXMLLoader; import javafx.stage.Stage; import javafx.scene.Parent; import javafx.scene.Scene; public class Main extends Application { @Override public void start(Stage primaryStage) { try { Parent root = FXMLLoader.load(getClass().getResource("RangeSliderExample.fxml")); primaryStage.setScene(new Scene(root,500,500)); primaryStage.show(); } catch(Exception e) { e.printStackTrace(); } } public static void main(String[] args) { launch(args); } }
RangeSliderExample.fxml
<?xml version="1.0" encoding="UTF-8"?> <?import javafx.scene.control.ScrollPane?> <?import javafx.scene.layout.AnchorPane?> <AnchorPane prefHeight="459.0" prefWidth="554.0" xmlns="http://javafx.com/javafx/19" xmlns:fx="http://javafx.com/fxml/1" fx:controller="application.Controller"> <children> <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="450.0" prefWidth="554.0"> <children> <ScrollPane fx:id="scrollPane" layoutY="13.0" prefHeight="439.0" prefWidth="543.0" /> </children> </AnchorPane> </children> </AnchorPane>
Controller.java
package application; import java.net.URL; import java.util.ResourceBundle; import javafx.fxml.FXML; import javafx.fxml.Initializable; import javafx.scene.control.ScrollPane; import javafx.scene.layout.HBox; import org.controlsfx.control.RangeSlider; public class Controller implements Initializable { @FXML private ScrollPane scrollPane; @Override public void initialize(URL arg0, ResourceBundle arg1) { RangeSlider rangeSlider = new RangeSlider(0, 10000, 0, 100); rangeSlider.setShowTickLabels(true); rangeSlider.setShowTickMarks(true); rangeSlider.setMinorTickCount(10000); HBox sliderBox = new HBox(); sliderBox.getChildren().add(rangeSlider); scrollPane.setContent(sliderBox); rangeSlider.setPrefWidth(10000); } }
依赖说明
使用的ControlFX RangeSlider版本为11.1.2,可从Maven仓库获取对应JAR包。
需求效果
滚动窗内的RangeSlider选中的范围,需对应高亮下方整个窗口区域的内容。
内容的提问来源于stack exchange,提问作者VMi
相关产品推荐
相关产品推荐

