我的 JavaFX 应用程序中有两个微调器和一个切换按钮,我也将它们设置为可编辑
Spinner<Integer> hSelector = new Spinner<>(1,15000,1000,1);
Spinner<Integer> wSelector = new Spinner<>(1,15000,1000,1);
hSelector.setEditable(true);
wSelector.setEditable(true);
ToggleButton lock = new ToggleButton("lock");
选择此lock
切换按钮时,我想保持 和 的值的hSelector
比率wSelector
。所以我尝试了以下,
lock.selectedProperty().addListener((observable, oldValue, newValue) -> {
if(newValue){
hSelector.getValueFactory().valueProperty().addListener((ob, ov, nv) -> {
wSelector.getEditor().setText(String.valueOf((nv * wSelector.getValue()) / ov));
});
wSelector.getValueFactory().valueProperty().addListener((ob, ov, nv) -> {
hSelector.getEditor().setText(String.valueOf((nv * hSelector.getValue()) / ov));
});
}
});
但这并没有很好地工作。问题是,当lock
被选中时,我更改了一个微调器的值,然后我只是将它们一个一个地聚焦(通过单击微调器的文本字段),即使我不编辑值,它们的值也会自动更改。
现在,我的问题是,保持这些微调器的值比率的正确方法是什么?我的方法有什么问题?lock
以及未选中后如何消除保持比率的行为。