如何在javafx中旋转垂直滑块从顶部从0开始

问题描述 投票:0回答:1

我想在javafx中旋转垂直滑块,以便从顶部开始0。

我试过这个:

.slider {
    -fx-rotate: 180;
}

但是后来我得到了这个:

我想就这样保留它,但不幸的是我无法以正确的方式扭转数字。

我怎样才能旋转数字?或者通常还有另一种方法可以将滑块倒置吗?

感谢您的每一个回答!

java css user-interface javafx javafx-8
1个回答
0
投票

我会像 jewselsea 指出的那样查看标签格式化程序,是的,这可能很棘手。

也许这可以帮助你:

package org.example;
import javafx.application.Application;
import javafx.geometry.Orientation;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Slider;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class App extends Application {

    @Override
    public void start(Stage stage) {

        Slider slider = new Slider();
        slider.setOrientation(Orientation.VERTICAL);
        slider.setPrefHeight(500);
        slider.setMin(0);
        slider.setMax(6);
        slider.setShowTickLabels(true);
        slider.setShowTickMarks(true);
        slider.setMajorTickUnit(1);
        slider.setLabelFormatter(new StringConverter() {});

        slider.valueProperty().addListener(((observable, oldValue, newValue) -> {

            System.out.println(Invers.return0ToX(newValue.intValue()));

        }));

        VBox vBox = new VBox();
        vBox.setAlignment(Pos.CENTER);
        vBox.getChildren().add(slider);

        BorderPane borderPane = new BorderPane();
        borderPane.setCenter(vBox);

        var scene = new Scene(borderPane, 300, 600);

        stage.setScene(scene);
        stage.show();

    }

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

}

StringConverter 类如下:

package org.example;

public abstract class StringConverter extends javafx.util.StringConverter<Double> {

    @Override
    public String toString(Double value) {

        return Integer.toString(Invers.return0ToX(value.intValue()));

    }

    @Override
    public Double fromString(String string) {

        return null;

    }

}

这个类用于反转值:

package org.example;
import java.util.Arrays;
import java.util.Collections;

    public class Invers {
    
        static Integer[] arrayWith0ToX = new Integer[7];
    
        public static int return0ToX(int input) {
    
            for (int x = 0; x <= arrayWith0ToX.length - 1; x++) {
    
                arrayWith0ToX[x] = x;
    
            }
    
            Collections.reverse(Arrays.asList(arrayWith0ToX));
    
            return arrayWith0ToX[input];
    
        }
    
    }

上面会给你这个:

编辑上面的内容以满足您的需求,但我不确定这是否是您想要的,您需要更详细地描述您想要的内容,以便我更准确。

© www.soinside.com 2019 - 2024. All rights reserved.