我想在javafx中旋转垂直滑块,以便从顶部开始0。
我试过这个:
.slider {
-fx-rotate: 180;
}
但是后来我得到了这个:
我想就这样保留它,但不幸的是我无法以正确的方式扭转数字。
我怎样才能旋转数字?或者通常还有另一种方法可以将滑块倒置吗?
感谢您的每一个回答!
我会像 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];
}
}
上面会给你这个:
编辑上面的内容以满足您的需求,但我不确定这是否是您想要的,您需要更详细地描述您想要的内容,以便我更准确。