0

我正在尝试使用 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。我有什么办法可以覆盖它并显示不同的最大值?

4

2 回答 2

1

好的 - 我最初放弃了这个并制作了我自己的非常难看的显示器,但无法阻止进一步挖掘。

我检查并构建了 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 属性,否则径向仪表将变得无用,因为它们的刻度不可读。

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

于 2014-01-28T04:17:24.223 回答
0

我和你有同样的问题。问题是 GaugeBuilder 改变了模型的最大值,但没有改变 VIEW 的最大值。

您不需要覆盖源。

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

//下面的代码非常重要

lcd.setMaxValue(9999);

于 2014-02-07T10:30:24.830 回答