我不知道为什么会变得困难。我有从2000年到现在的数据。我想画出某个特定月份的图表。这是我为序列添加值的代码。
SimpleDateFormat sfMonth= new SimpleDateFormat("MMM");
SimpleDateFormat sfYear= new SimpleDateFormat("yyyy");
SimpleDateFormat sfDate= new SimpleDateFormat("dd");
double baseprice=0;
XYChart.Series<Number, Number> series=null;
int currentYear=0;
for(DayQuote dq:quotes)
{
if(baseprice==0)
{
baseprice=dq.getClose();
}
if(sfMonth.format(dq.getDate()).equals(month))
{
int date= Integer.parseInt(sfDate.format(dq.getDate()));
if(series==null)
{
series= new XYChart.Series<>();
currentYear=Integer.parseInt(sfYear.format(dq.getDate()));
}
double variance=((dq.getClose()-baseprice)/baseprice)*100;
if(currentYear==Integer.parseInt(sfYear.format(dq.getDate())))
{
series.getData().add(new XYChart.Data<Number, Number>(date,variance));
}
else
{
//System.out.println("Adding Series");
series.setName((currentYear-1)+"");
lineChart.getData().add(series);
series= new XYChart.Series<>();
currentYear=Integer.parseInt(sfYear.format(dq.getDate()));
series.getData().add(new XYChart.Data<Number, Number>(date,variance));
}
}
else
{
baseprice=dq.getClose();
}
}
现在,我正在使用Linechart
LineChart<Number, Number> lineChart=(LineChart<Number, Number>) vBox.getChildren().get(2);
我想在XAxis上将tick显示为12/Jan 13/Jan等,所以我创建了一个TickLevelFormatter。下面是代码
public class DayTickLevelFormattor extends StringConverter<Number> {
private String month;
@Override
public Number fromString(String date) {
return Integer.parseInt(date.split("/")[0]);
}
@Override
public String toString(Number date) {
//System.out.println("Printed Date"+date.intValue()+"/"+month);
if(date.intValue()!=10)
{
return (date.intValue()+1)+"/"+month;
}
else
{
System.out.println("Issue");
return (date.intValue()+1)+"/"+month;
}
}
public String getMonth() {
return month;
}
public void setMonth(String month) {
this.month = month;
}
}
但是我的图表没有显示日期10、20等的正确标签。此外,我将XAxis的范围设置为1到30或31,但它仍然超出了这个限制,并显示33/Apr(这让我觉得非常愚蠢)
请让我知道这个问题的解决方法。
我不知道这是否能回答你的问题,因为没有足够的代码。我猜轴是自动测距的,它在每边添加了一些填充。也没有0Mar。
我看不出你在哪里调用setMonth(),但我敢打赌,当它是10的倍数时,解析日期时会有一些错误。
您可以通过使用长(实际的java/unix日期)的格式化程序并使用您想要的格式(如d/MMM)来解决这个问题。或者,您可以将自动范围设置为false,并将边界设置为1-
顺便说一句,轴格式化程序中有一个后缀功能,但我从未使用过它。您可以使用它来添加月份名称,如果它们都相同。https://docs.oracle.com/javafx/2/api/javafx/scene/chart/NumberAxis.DefaultFormatter.html
问题内容: 我正在尝试学习JavaFX,并且已经编写了下面显示的代码,但是我似乎在使用以下代码行时遇到麻烦: 在强调setOnAction的位置并显示此错误: 我究竟做错了什么? 问题答案: 您已经导入了awt事件监听器,只需更改此行代码 有了这个 你也可以像这样使用lambda表达式
我正在尝试学习JavaFX,我已经编写了下面所示的代码,但这行代码似乎有问题: 其中它在setOnAction下划线,并打印此错误: 我做错了什么?
问题内容: 我试图使用 AngularJS 提供的和函数显示/隐藏一些HTML 。 **** 根据文档,这些功能的各自用法如下: ngHide – {表达式}-如果表达式为true,则分别显示或隐藏该元素。ngShow – {表达式}-如果表达式为真,则分别显示或隐藏该元素。 这适用于以下用例: 但是,如果我们使用对象中的参数作为表达式,则和被赋予正确的/ 值,但这些值不会被视为布尔值,因此始终返
如果我们运行查询(带或不带where子句参数),它都能正常工作。 如果我们在准备好的语句中使用硬编码的参数运行查询,它也可以正常工作。 如果以编程方式设置prepared语句的参数,则不起作用。 以上测试确认JDBC连接正常工作。 使用PreparedStatement、JdbcTemplate或NamedParameterJdbcTemplate时也会出现相同的错误,因此我怀疑PreparedS
问题内容: 这是一个正常工作的web.xml: 当我删除元素并使用以下注释时: 然后,Tomcat 7.0.14给我以下错误: 我遵循了[这个问题](http://codingdict.com/questions/115618的答案,但这对我不起作用。 这是我的Web应用程序的依赖项: 编辑:我只有在使用Tomcat(7.0.14)时才有问题。玻璃鱼很好。 问题答案: 这是Tomcat7中的错误。