2012-02-25 10 views

答えて

0

私はあなたが本当にやりたいことにあると思いますを見つけることができない...

  1. HTMLEditorKitを拡張し、それがHTMLEditorKit.HTMLFactory
  2. を拡張するクラスを返すよう getViewFactory()
  3. を上書きそのクラスで
  4. 、そうでない場合は

このよう<IMG>とsuper.create()ためのカスタムビューを返すためにcreate()をオーバーライドします。

class MyImageKit extends HTMLEditorKit { 
    private static final MyImageFactory myFactory = new MyImageFactory(); 

    public ViewFactory getViewFactory() { 
     return myFactory; 
    } 

    static class MyImageFactory extends HTMLFactory { 
     public View create(Element elem) { 
      Object type = elem.getAttributes() 
           .getAttribute(StyleConstants.NameAttribute); 
      if(type == HTML.Tag.IMG) { 
       return new MyImageView(elem); 
      } else { 
       return super.create(elem); 
      } 
     } 
    } 
} 

class MyImageView extends ImageView { 
    MyImageView(Element elem) { 
     super(elem); 
    } 

    protected void setPropertiesFromAttributes() { 
     super.setPropertiesFromAttributes(); 
     try { 
      ImageView.class.getDeclaredField("vAlign").set(this, new Float(0.75f)); 
     } catch(Exception e) { 
      e.printStackTrace(); 
     } 
    } 
} 
+0

いいえ、私はそれを必要としません。ネイティブクラスを別のクラスに置き換える必要があります – user1221483

+0

http://javasourcecode.org/html/open-source/jdk/jdk-6u23/javax/swing/text/html/ImageView.java.html。行258-267。 Align = .75 fを設定する方法はありません。またはその他 - これは私の問題です – user1221483

+0

'setPropertiesFromAttributes()'をオーバーライドし、リフレクションを使って 'vAlign = 0.75f'を設定することができます。 –

関連する問題