Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/191.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在TeeChart上添加文本消息_Java_Android_Teechart - Fatal编程技术网

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

我正在为Android评估TeeChart Java。 在某些情况下,数据可能无法用于我的图表。在这种情况下,我应该向用户显示一条消息。使用TeeChart最简单的方法是什么?

我尝试使用
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函数可以做到这一点