我觉得你真的想要做的是...
- 扩展
HTMLEditorKit
和覆盖getViewFactory()
- 使其返回扩展
HTMLEditorKit.HTMLFactory
类
- 在这个类,覆盖
create()
换来<IMG>和super.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 2012-02-25 15:26:53
http://javasourcecode.org/html/open-source/jdk/jdk-6u23/javax/swing/text/html/ImageView.java.html。 258-267行。没有办法设置Align = .75 f;或其他 - 这是我的问题 – user1221483 2012-02-25 18:52:55
你可以重写'setPropertiesFromAttributes()'并使用反射设置'vAlign = 0.75f'。 – 2012-02-26 02:20:09