相关疑难解决方法(0)

Spinner <Integer>绑定到IntegerProperty

我想使用FX8 Spinner控件,但我想将源绑定到IntegerProperty

int MIN = 0;
int MAX = 5000;
int STEP = 500;
IntegerProperty integerProperty = new SimpleIntegerProperty();

Spinner<Integer> spinner = new Spinner<>(MIN, MAX, STEP);
Run Code Online (Sandbox Code Playgroud)

我知道绑定是通过绑定到valuePropertyValue Factory中设置的.然而,这种希望Property<Integer>,我无法找到一个方法来之间进行转换IntegerPropertyProperty<Integer>.

显然下面会生成一个编译器错误:

spinner.getValueFactory().valueProperty().bindBidirectional(integerProperty);
Run Code Online (Sandbox Code Playgroud)

我是否需要为两个方向手动分配更改侦听器?当然有一个更简洁的解决方案使用valueProperty,这不可能是一个无法预料的情况.

java javafx-8

6
推荐指数
1
解决办法
2065
查看次数

连接具有StringConverter的Slider和Spinner

对于数字输入,将模拟控件与文本显示同步有时会很方便。在此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)

java swing javafx slider spinner

5
推荐指数
1
解决办法
164
查看次数

标签 统计

java ×2

javafx ×1

javafx-8 ×1

slider ×1

spinner ×1

swing ×1