Java ImageView获取位置并设置对齐

时间:2012-02-24 22:12:17

标签: java html swing imageview jeditorpane

http://docs.oracle.com/javase/6/docs/api/javax/swing/text/html/ImageView.html

JEditorPane本身包含ImageView。 我可以得到尺寸和对齐方式:

    ImageView.getPreferredSpan(View.X_AXIS)); //20px
    ImageView.getPreferredSpan(View.Y_AXIS)); //20px
    ImageView.getAlignment(View.X_AXIS)); //0.5
    ImageView.getAlignment(View.Y_AXIS)); //1.0

我需要获得坐标x / y(绝对或相对)并将y对齐更改为0.75。我怎么能这样做?

3 个答案:

答案 0 :(得分:2)

答案 1 :(得分:2)

作为参考,该值派生自img标记的 align 属性,如适用的HTML 3.2 Reference Specification中所定义。 left (0.0), middle (0.5)或 right (1.0)以外的值不会直接支持。

答案 2 :(得分:1)

有点晚了,但我遇到了同样的问题。修复此问题的唯一方法是创建自己的ImageView并在其setPropertiesFromAttributes()函数中覆盖vAlign值。问题是,setPropertiesFromAttributes受到保护,因此您必须将ImageView的整个原始代码复制并粘贴到您自己的代码中,然后将代码替换为:

    vAlign = 1.0f;
    if (alignment != null) {
        alignment = alignment.toString();
        if ("top".equals(alignment)) {
            vAlign = 0f;
        }
        else if ("middle".equals(alignment)) {
            vAlign = .5f;
        }
    }
    vAlign = .745f;

您还需要创建自己的HTMLEditorKit并覆盖getViewFactory():

@Override
    public ViewFactory getViewFactory() {

        return new HTMLEditorKit.HTMLFactory() {

            public View create(Element e) {

                View v = super.create(e);

                Object o = e.getAttributes().getAttribute(StyleConstants.NameAttribute);

                if (o instanceof HTML.Tag) {

                    HTML.Tag kind = (HTML.Tag) o;

                    if (kind == HTML.Tag.IMG) {
                        return new MyImageView(e);
                    }
                }
...