私はあなたが本当にやりたいことにあると思いますを見つけることができない...
- は
HTMLEditorKit
を拡張し、それがHTMLEditorKit.HTMLFactory
を拡張するクラスを返すよう
getViewFactory()
- を上書きそのクラスで
- 、そうでない場合は
このよう<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();
}
}
}
いいえ、私はそれを必要としません。ネイティブクラスを別のクラスに置き換える必要があります – user1221483
http://javasourcecode.org/html/open-source/jdk/jdk-6u23/javax/swing/text/html/ImageView.java.html。行258-267。 Align = .75 fを設定する方法はありません。またはその他 - これは私の問題です – user1221483
'setPropertiesFromAttributes()'をオーバーライドし、リフレクションを使って 'vAlign = 0.75f'を設定することができます。 –