【发布时间】:2018-12-28 13:48:00
【问题描述】:
我的 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");
When this lock toggle button is selected I want to maintain the ratio in values of hSelector and 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后如何去除保持比例的行为。
【问题讨论】:
标签: java javafx logic javafx-11