我为我的应用程序设置了一个JavaFX场景构建器。在我的折线图上,我根据日期投了一些图表。默认情况下,JavaFX LineChart不支持日期。所以我使用这个图书馆http://myjavafx.blogspot.com/2013/09/javafx-charts-display-date-values-on.html,它工作正常。 Librray还允许使用setLowerBound和setUpperBound方法。我已经写了代码,它不起作用。
我的FXML代码(仅适用于LINECHART):
<LineChart fx:id="lineChart" animated="false">
<xAxis>
<DateAxis side="BOTTOM" label="Napoved kalibracije" fx:id="dateAxis"/>
</xAxis>
<yAxis >
<NumberAxis label="Odstopanja v %" lowerBound="0" upperBound="95" tickUnit="10"/>
</yAxis>
</LineChart>
正如您所看到的,我已经设置了id =“dateAxis”,因此我可以像我在Scene Builder中提到的那样从主类引用布局包。
主类中的代码(仅适用于DATAAXIS)我从FXML获得ID:
Scene scena = primaryStage.getScene();
DateAxis dA = (DateAxis) scena.lookup("#dateAxis");
dA.setUpperBound(new GregorianCalendar(2016,8,23).getTime());
primaryStage.show();
System.out.println(dA);
返回:
DateAxis[id=dateAxis, styleClass=axis]
什么意思是工作正常。但是我在xAxis(DateAxis)上的图表并未到2016年8月23日。 如果我们解决这个问题,我将非常感激。
答案 0 :(得分:0)
您需要应用两个更改,第一个是添加日期轴的构造函数,两个参数:下限+上限, 例如:
final DateAxis xAxis = new DateAxis(new Date(2013-1900,1,4),new Date(2013-1900,30,14));
另一个变化是更改类DateAxis的源代码,查找这部分代码(只搜索“true”以查找特定行)
public DateAxis(Date lowerBound, Date upperBound) {
this();
setAutoRanging(true); // change it to "false"
setLowerBound(lowerBound);
setUpperBound(upperBound);
}
并将“setAutoRanging”参数更改为“false”