Java 在TeeChart上添加文本消息
我正在为Android评估TeeChart Java。 在某些情况下,数据可能无法用于我的图表。在这种情况下,我应该向用户显示一条消息。使用TeeChart最简单的方法是什么? 我尝试使用Java 在TeeChart上添加文本消息,java,android,teechart,Java,Android,Teechart,我正在为Android评估TeeChart Java。 在某些情况下,数据可能无法用于我的图表。在这种情况下,我应该向用户显示一条消息。使用TeeChart最简单的方法是什么? 我尝试使用textOut()方法,但问题是我要显示的消息可能比图表控件宽,但在这种情况下不会出现文本换行。因此,我的消息显示在图表的边界之外: String text = ...; IGraphics3D g = chart.getGraphics3D(); g.textOut(g.getXCenter() - (g.t
textOut()
方法,但问题是我要显示的消息可能比图表控件宽,但在这种情况下不会出现文本换行。因此,我的消息显示在图表的边界之外:
String text = ...;
IGraphics3D g = chart.getGraphics3D();
g.textOut(g.getXCenter() - (g.textWidth(text) / 2), g.getYCenter() - (g.textHeight(text) / 2), text);
我也尝试过使用注释工具,但是在图表中心对齐注释时出现了问题。顺便问一下,如何强制重新绘制图表?这里有两种方法可以实现。我实际上也在做你建议的事情:使用注释工具直接在画布上绘制文本,在ChartPaintListener:
private void testMessage() {
final String message = "This is a message for the user";
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
final int mLeft = metrics.widthPixels/2 - tChart1.getGraphics3D().textWidth(message)/2;
final int mTop = metrics.heightPixels/2 - tChart1.getGraphics3D().textHeight(message)/2 - 100;
final Annotation annot = new Annotation(tChart1.getChart());
annot.setText(message);
annot.getShape().setCustomPosition(true);
annot.setLeft(mLeft);
annot.setTop(mTop);
tChart1.addChartPaintListener(new ChartPaintAdapter() {
@Override
public void chartPainted(ChartDrawEvent e) {
tChart1.getGraphics3D().textOut(mLeft, mTop-50, message);
}
});
}
谢谢你,耶雷。但是,如果我的消息因为文本的宽度大于画布的宽度而被包装,那该怎么办呢?另外请注意,我的图表是可调整大小的,因此每次用户调整图表大小时,我都应该保持标签的位置。@丹尼斯,您是否尝试过在
chartpained()
中进行计算?当我尝试使用metrics.widthPixelsys时,您可以在消息中剪切字符串。我应该自己剪切字符串,还是有办法自动将字符串包装成多行?恐怕没有TeeChart函数可以做到这一点