2012-02-24 67 views
0

http://docs.oracle.com/javase/6/docs/api/javax/swing/text/html/ImageView.htmlJava ImageView获取位置和设置对齐方式

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。我怎样才能做到这一点?

回答

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); 
        } 
       } 
...