我正在尝试在Jfxtras中使用LCD仪表。这是我要创建量规的代码:

    final Gauge lcd = GaugeBuilder.create()
            .gaugeType(GaugeBuilder.GaugeType.LCD)
            .lcdDesign(LcdDesign.DARKAMBER)
            .prefWidth(200)
            .prefHeight(85)
            .maxValue(9999)
            .build();


然后,我像这样设置量规的值:

    Platform.runLater( new Runnable() {

        @Override
        public void run() {
            lcd.setValue(245);
        }
    });


无论我做什么,显示的最大值似乎总是100。我有什么办法可以覆盖它并显示不同的最大值?

最佳答案

好的-我一开始就放弃了这一点,并做了非常丑陋的显示,但是无法阻止进一步的挖掘。

我签出并构建了jfxtras-labs源,发现了我的问题。

jfxtras.labs.scene.control.gauge.GaugeModel的构造函数中,有一个私有且不可修改的scale属性:

private ObjectProperty<LinearScale> scale;

在默认构造函数中,它被硬编码为初始化为最小为0,最大为100。

scale = new SimpleObjectProperty<LinearScale>(new LinearScale(0, 100));

Gauge和Lcd都使用此构造函数。

目前,除了更改源代码外,我没有找到任何其他修改此属性的方法。

这是我修改上述行以解决问题的内容:

scale = new SimpleObjectProperty<LinearScale>(new LinearScale(Integer.MIN_VALUE, Integer.MAX_VALUE));

我从中观察到的唯一下游副作用是,执行此操作后,在构建量规时需要设置min / max属性,否则径向量规将变得无用,因为其标尺无法读取。

我没有看到任何其他问题,但这并不意味着我没有介绍任何问题。因此,使用风险自负。

10-02 22:51