if(ui==null),这行,你确定ui就一定是null吗?
解决方案 »
- 有关异常类的问题
- 郁闷的环境变量问题(100分跪求)
- java -classpath c:/mail.jar -jar sendmail.jar什么意思
- 请教各位高手!关于JTREE的问题,高分相送!
- 想用java做个程序来自动登录qq,请大家指点!
- 我学了这么长时间的java还是有很多很基本的问题没有搞清
- 那位老大 有JDBC的4种驱动 给小的一份 谢谢谢谢谢谢!!!
- 关于构建器和其他的一些疑问
- 文件操作问题
- 我要考SCJP,希望大家指教.强烈呼吁 考SCJP的同胞们联合起来!!!!!!!!!!!
- Tomcat怎样设置才能在Win2000上自动启动?
- 强烈建议CSDN搞一个聊天室。让大家交流起来更方便。!!有没有聊技术的聊天室啊?
target.getUIClassID()
这句话
这个UIClassID就是对应的....太晚了,必须走人了
明天在说吧
而在WindowsLookAndFeel类里边定义如下:
/**
* Initialize the uiClassID to BasicComponentUI mapping.
* The JComponent classes define their own uiClassID constants
* (see AbstractComponent.getUIClassID). This table must
* map those constants to a BasicComponentUI class of the
* appropriate type.
*
* @see BasicLookAndFeel#getDefaults
*/
protected void initClassDefaults(UIDefaults table)
{
super.initClassDefaults(table);
String windowsPackageName = "com.sun.java.swing.plaf.windows.";
Object[] uiDefaults = {
"ButtonUI", windowsPackageName + "WindowsButtonUI",
"CheckBoxUI", windowsPackageName + "WindowsCheckBoxUI",
"RadioButtonUI", windowsPackageName + "WindowsRadioButtonUI",
"ToggleButtonUI", windowsPackageName + "WindowsToggleButtonUI",等等,也就是说默认的ButtonUI在windows下对应com.sun.java.swing.plaf.windows.WindowsButtonUI类,
在你上边拷贝的这一段程序中:
“ if(ui==null)
ui=getDefaults().getUI(target);
}显然,调用了UIDefaults的getUI函数,”这里你没有说为什么显然。
而lookandfeel的获取就是在你这个显然里边
UiManager的getDefault就是返回当前程序中默认的L&F所以整个流程是
组件的updateUi->UiManager的getDefault得到对应的lookandfeel的UiDefault->根据UIDefault的table表得到对应的平台的LookAndFeel的classID->在通过UIdefault中的反射生成对应的UI对象