JFxtas Lcd Gauge最大值

时间:2013-12-27 18:41:37

标签: java javafx-2 jfxtras

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

2 个答案:

答案 0 :(得分:1)

好的 - 我最初放弃了这个并制作了我自己看起来非常丑陋的画面,但却无法继续深入挖掘。

我检查并构建了jfxtras-labs源代码并发现了我的问题。

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

private ObjectProperty<LinearScale> scale;

硬编码被初始化为默认构造函数中的min为0,最大值为100。

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

这个构造函数由Gauge和Lcd使用。

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

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

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

我从中观察到的唯一下游副作用是,在执行此操作后,您需要在构建仪表时设置最小/最大属性,否则径向仪表将变得无用,因为它们的比例不可读。

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

答案 1 :(得分: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);