问题描述
该问题与我之前的问题[How to get [x,y] values from a JfreeChart to set the mouse position on screen?]有关,完整的代码如下。
应用程序运行正常,但我注意到十字线标签有时看起来有点太紧,左右边缘太窄,如以下屏幕截图所示,最上面的是现在的样子,但是我d宁愿在标签的左侧或右侧边缘添加一个额外的1或2像素,因此看起来像底部图像,感觉更舒适,我对应用程序进行了一些修改,但现在价格标签将显示相同的图像每天的价值,我做错了什么?
为什么在标签中有时会有下划线[side line],有时却没有?
#dependencies: //Remove this line
Flutter: //And
#sdk: Flutter // indent
assets: // this block
- assets/images/pic_1.jpg // back
解决方法
价格标签每天都会显示相同的值
是的,您的yCrosshair
有一个自定义CrosshairLabelGenerator
,通常会返回最近的价格。幸运的是,StandardCrosshairLabelGenerator
使您可以更方便地更改外观。 Internally,实现在调用labelTemplate
时使用MessageFormat.format()
;我添加了文本和空格以突出显示效果:
yCrosshair.setLabelGenerator(new StandardCrosshairLabelGenerator(
" Price: {0} ",NumberFormat.getCurrencyInstance()));
可以在您的自定义xCrosshair
中使用类似的方法:
xCrosshair.setLabelGenerator(new StandardCrosshairLabelGenerator() {
@Override
public String generateLabel(Crosshair crosshair) {
…
long volume = item.getValue().longValue();
String s = NumberFormat.getInstance().format(volume);
return MessageFormat.format(" Volume: {0} ",s);
}
});
此外,如here所述,覆盖getPreferredSize()
,并考虑使用其他布局以更好地调整大小:
public class PriceVolume_Chart extends JPanel implements ChartMouseListener {
…
public PriceVolume_Chart(String Symbol,int Index) {
super(new GridLayout());
…
}
@Override
public Dimension getPreferredSize() {
return new Dimension(800,500);
}
…
}