Es gibt einen Schieberegler und eine Beschriftung in meiner Szene. Ich habe eine anonyme Methode geschrieben, die den Text des Etiketts entsprechend dem Wert des Schiebereglers setzt und ihn dann direkt unter dem Schieberegler des Schiebereglers platziert.JavaFX: Position des Labels stimmt nicht mit der Position des Ziehknopfes im Schieberegler überein.
timeSlider.valueProperty().addListener(new ChangeListener<Number>() {
@Override
public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {
final double timeSliderMin = timeSlider.getMin();
timeLabel.setText(String.valueOf(newValue.intValue()));
timeLabel.setLayoutX(timeSlider.getLayoutX() + (timeSlider.getValue() - timeSliderMin)
/(timeSlider.getMax() - timeSliderMin) * timeSlider.getWidth());
}
});
In diesem Zusammenhang ist der timeSlider der Schieber und das Timelabel ist das Label, das ich früher beziehen.
Hier gibt es Bilder von der Verlagerung des Etiketts in Bezug auf den Schieber:
Das Bild oben zeigt, dass, wenn der Schieber an der Minimalwert ist, das Etikett direkt unter ihm ist.
Wenn der Schieberegler jedoch seinen Maximalwert erreicht, ist die Beschriftung nicht richtig auf den Schieberegler ausgerichtet.
Ich würde wirklich jede Einsicht schätzen, was ich möglicherweise falsch machen könnte, damit dies geschieht.
Vielen Dank.
Hey, ich habe Ihren Ansatz versucht und es funktioniert gut, wenn ziehen - aber wenn es um einen Klick auf den Schieber kommt, scheint das Etikett hinter und nur Änderungen hinken auf erneut klicken. –
Ich habe keine Verzögerung beim Klicken auf den Schieberegler. Dabei bewegt sich das Label an die richtige Stelle und aktualisiert seinen Wert sofort beim Anklicken (Testsystem Java 8u60, OS X 10.11.4, MacBook Air 2012). – jewelsea