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