javax.swing.text.html.ImageView; 線111和258-267
http://javasourcecode.org/html/open-source/jdk/jdk-6u23/javax/swing/text/html/ImageView.java.html訪問Java的私有字段
public class ImageView extends View {
....
private float vAlign;
....
}
我的程序:
.....
ImageView layeredPane = (ImageView) view;
Field privateStringField = layeredPane.getClass().getDeclaredField("vAlign");
privateStringField.setAccessible(true);
layeredPane.vAlign = 2.0;
.....
我得到:
Test.java:80: error: vAlign has private access in ImageView layeredPane.vAlign = 2.0;
如何解決呢?我需要將值設爲2.0
java.lang.IllegalAccessException:類不能訪問修飾符類javax.swing.text.html.ImageView中的一員「私人」我明白,這是不好,但這是非常有必要的。也許有一種方法可以添加我自己的方法,或修改protected void setPropertiesFromAttributes? – user1221483 2012-02-25 20:12:25
@ user1221483:你調用'setAccessible(true)'後會得到那個*嗎?我不相信它*是必要的 - 它真的感覺像你應該嘗試以不同的方式通過更多的佈局來實現。 – 2012-02-25 20:45:13
pardon,java.lang.IllegalArgumentException:無法設置float字段javax.swing.text.html.ImageView.vAlign爲(double)0.5。我使用privateStringField.setFloat(layeredPane,(float)0.75);沒有錯誤,它不起作用:'( – user1221483 2012-02-25 20:51:47