我遇到的问题是在java2D里 需要右对齐字符串到一个Y坐标轴位置
比如:
1234567890
       ABC
      5_a?
但是正常的drawString方法都是 给出一个启示(x,y)坐标 然后从左往右画
public abstract void drawString(String str,int x,int y)
public abstract void drawString(AttributedCharacterIterator iterator,int x,int y)
第二个方法比较有意思 获得一个定义了很多属性的迭代器中读取字符 但是好像TextAttribute里面可以被设置的属性
还有Bidi类 但还是没有找到合适的方法 请问有没有遇到过相同问题的?另外我尝试过一个不是很好的方法 统计字符个数 然后移动x坐标值 比如"ABC" 需要移动3乘以一个字符占用的宽度
可是相应的问题是不同字符画出来宽度肯定也都不同的 比如一个字符串"D.a@"每个字符占据的宽度是不一样的 所以我也不能得出一个统一的宽度大家给点好建议 如果觉得这个可行

解决方案 »

  1.   

    Font f = new Font("Helvetica", Font.BOLD, 12);
    AttributedString ats = new AttributedString(comment.trim());
    // ats.addAttribute(TextAttribute.RUN_DIRECTION,
    // TextAttribute.RUN_DIRECTION_RTL);
    ats.addAttribute(TextAttribute.FONT, f);
    AttributedCharacterIterator iter = ats.getIterator();
    if (isLeft) {
    TextLayout textlayout = new TextLayout(iter, g2d
    .getFontRenderContext());
    int textWidth = (int) textlayout.getBounds().getWidth();
    g2d.drawString(iter, getX() - textWidth - 5, getY()
    + height / 2);
    } else
    g2d.drawString(iter, getX() + width + 5, getY() + height
    / 2);
    这个是答案 以后有同样问题的需要时候自己看吧
    分也不能给自己 所以还是给2楼了吧