You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 16:32:32