我正在尝试在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属性,否则径向量规将变得无用,因为其标尺无法读取。
我没有看到任何其他问题,但这并不意味着我没有介绍任何问题。因此,使用风险自负。