Olá:
Tenho em Stage composto por um Checkbox, Label e Slider. O Label exibe o valor de Slider e o checkbox altera o orientação do slider (vertical ou não). Segue-se o código:
package testejavafx;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.layout.Flow;
import javafx.scene.control.CheckBox;
import javafx.scene.control.Label;
import javafx.scene.control.Slider;
import javafx.geometry.VPos;
function formatar(value: Number): String {
"{%03.0f value}"
}
Stage {
title: "Teste de Orientação do Slider"
scene: Scene {
var sldValor: Slider;
var checkVertical: CheckBox;
width: 300
height: 200
content: [
Flow {
hgap: 10
vpos: VPos.TOP
content: [
checkVertical = CheckBox {
text: "Vertical"
allowTriState: false
selected: false
vpos: VPos.TOP
},
Label {
text: bind formatar(sldValor.value)
vpos: VPos.TOP
},
sldValor = Slider {
min: 0
max: 100
showTickLabels: true
showTickMarks:true
majorTickUnit: 20
minorTickCount:2
vertical: bind checkVertical.selected
labelFormatter: formatar
}
]
}
]
}
}
Quando a orientação está na horizontal o valor reflete a posição do cursor do slider.
Entretanto quando a orientação é alterada isso deixa de acontecer. Na imagem abaixo, vê-se que quando a posição está em 20, o valor é 80; quando a posição está em 40, o valor é 60. Quando altero o min e o max para 10 e 80, quando o cursor está posição 50 o valor é 40, na posição 30 o valor é 60.
Alguém já viu isso antes? como corrigir?