对于数字输入,将模拟控件与文本显示同步有时会很方便。在此Swing 示例中,a JSpinner和a JSlider分别监听更改事件,并分别更新对方的模型以进行匹配。如下所示,一个类似的JavaFX程序将a Spinner和a 连接起来Slider,这些侦听器使控件保持协调:
slider.valueProperty().addListener((Observable o) -> {
spinner.getValueFactory().setValue(slider.getValue());
});
spinner.valueProperty().addListener((Observable o) -> {
slider.setValue((double) spinner.getValue());
});
Run Code Online (Sandbox Code Playgroud)
不幸的是,当我StringConverter在微调器中添加时SpinnerValueFactory,初始值是未格式化的,直到更改了任何一个控件为止-即使在添加转换器后再次显式设置初始值时:
spinner.getValueFactory().setConverter(…);
spinner.getValueFactory().setValue(INITIAL_VALUE);
Run Code Online (Sandbox Code Playgroud)
我要去哪里错了?
import java.text.NumberFormat;
import javafx.application.Application;
import javafx.beans.Observable;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Slider;
import javafx.scene.control.Spinner;
import javafx.scene.layout.GridPane;
import javafx.stage.Stage;
import javafx.util.converter.PercentageStringConverter;
/**
* @see /sf/answers/424759051/
*/
public class SpinSlider extends Application {
private static final double MIN = 0;
private static final double MAX …Run Code Online (Sandbox Code Playgroud)