2012-02-24 58 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); 
        } 
       } 
...