我在试着用Jfxtras的液晶显示器。下面是我必须创建的代码:
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。是否有任何方法可以覆盖这个值并显示一个不同的最大值?
发布于 2014-01-28 04:17:24
好吧-我一开始就放弃了这一点,做了我自己的丑陋的展示,但就是无法阻止进一步挖掘。
我查看并构建了jfxtras-labs源代码,并发现了我的问题。
在jfxtras.labs.scene.control.gauge.GaugeModel的构造函数中,有一个私有的、不可修改的scale属性:
private ObjectProperty<LinearScale> scale;
在默认构造函数中初始化为min为0,最大值为100是硬编码的。
scale = new SimpleObjectProperty<LinearScale>(new LinearScale(0, 100));
此构造函数由量规和液晶显示器共同使用。
目前,除了修改源代码之外,我还没有找到任何方法来修改这个属性。
下面是我修改了上面的行,以解决我的问题:
scale = new SimpleObjectProperty<LinearScale>(new LinearScale(Integer.MIN_VALUE, Integer.MAX_VALUE));
我从这里观察到的唯一顺流副作用是,在这样做之后,您需要在构建量规时设置min/max属性,否则径向量规就会变得无用,因为它们的刻度是不可读的。
我没有看到任何其他的问题,但这并不意味着我没有介绍任何。所以你要承担自己的风险。
发布于 2014-02-07 10:30:24
我和你有同样的问题。问题是GaugeBuilder会更改模型最大值,但不会更改视图的最大值。
你不需要覆盖消息来源。
你所需要的就是:
最终量规lcd = GaugeBuilder.create().gaugeType(GaugeBuilder.GaugeType.LCD).lcdDesign(LcdDesign.DARKAMBER).prefWidth(200).prefHeight(85).maxValue(9999).build();
//下面的代码非常重要
lcd.setMaxValue(9999);
https://stackoverflow.com/questions/20806030
复制相似问题