我正在使用Nimbus外观&在我的挥杆申请中感受到。
我设置了外观{&}的UIDefaults
的主要属性和辅助属性。感觉。
颜色是对的。现在我遇到了问题,组件的画家使用颜色,这是在更新颜色主题之前定义的。
有没有办法,更新所有组件的画家使用新颜色,还是需要为每个属性实现自定义画家?
在SwingUtilities.updateComponentTreeUI(window)
。
UIDefaults
编辑:
以下代码设置整个应用程序的L& F:
try {
for( LookAndFeelInfo info : UIManager.getInstalledLookAndFeels() ) {
if( "Nimbus".equals( info.getName() ) ) {
UIManager.setLookAndFeel(info.getClassName());
customizeNimbusLaF();
SwingUtilities.updateComponentTreeUI( appWindow );
break;
}
}
}
catch( Exception e ) {
LogUtility.warning( "cannot set application look and feel" );
LogUtility.warning( e.getMessage() );
}
try {
for( LookAndFeelInfo info : UIManager.getInstalledLookAndFeels() ) {
if( "Nimbus".equals( info.getName() ) ) {
UIManager.setLookAndFeel(info.getClassName());
customizeNimbusLaF();
SwingUtilities.updateComponentTreeUI( appWindow );
break;
}
}
}
catch( Exception e ) {
LogUtility.warning( "cannot set application look and feel" );
LogUtility.warning( e.getMessage() );
}
代码确实如此(设置Nimbus Look& Feel)。
问题是,菜单的和其他组件使用旧颜色。
以下代码设置颜色:
Painters
private final void customizeNimbusLaF() {
UIManager.put( "control" , UIConstants.GREY_LIGHT );
UIManager.put( "nimbusAlertYellow" , UIConstants.YELLOW );
UIManager.put( "nimbusBase" , UIConstants.GREY_DARK );
UIManager.put( "nimbusDisabledText" , UIConstants.GREY_DARK );
UIManager.put( "nimbusFocus" , UIConstants.BLUE_LIGHT );
UIManager.put( "nimbusGreen" , UIConstants.GREEN );
UIManager.put( "nimbusInfoBlue" , UIConstants.BLUE_MIDDLE );
UIManager.put( "nimbusRed", UIConstants.RED );
UIManager.put( "nimbusSelectionBackground",
UIConstants.BLUE_MIDDLE );
UIManager.put( "background" ,UIConstants.GREY_LIGHT );
UIManager.put( "controlDkShadow" , UIConstants.GREY_DARK );
UIManager.put( "controlShadow", UIConstants.GREY_MIDDLE );
UIManager.put( "desktop", UIConstants.BLUE_MIDDLE );
UIManager.put( "menu", UIConstants.GREY_LIGHT );
UIManager.put( "nimbusBorder", UIConstants.GREY_MIDDLE );
UIManager.put( "nimbusSelection", UIConstants.BLUE_MIDDLE );
UIManager.put( "textBackground", UIConstants.BLUE_LIGHT );
UIManager.put( "textHighlight", UIConstants.BLUE_LIGHT );
UIManager.put( "textInactiveText", UIConstants.GREY_MIDDLE );
// panel
UIManager.put( "Panel.background", UIConstants.GREY_LIGHT );
UIManager.put( "Panel.disabled", UIConstants.GREY_LIGHT );
UIManager.put( "Panel.font", UIConstants.DEFAULT_FONT );
UIManager.put( "Panel.opaque", true );
// button
UIManager.put( "Button.background", UIConstants.GREY_LIGHT );
UIManager.put( "Button.disabled", UIConstants.GREY_LIGHT );
UIManager.put( "Button.disabledText", UIConstants.BLUE_MIDDLE );
UIManager.put( "Button.font", UIConstants.DEFAULT_FONT );
// menu
UIManager.put( "Menu.background", UIConstants.GREY_LIGHT );
UIManager.put( "Menu.disabled", UIConstants.GREY_LIGHT );
UIManager.put( "Menu.disabledText", UIConstants.GREY_DARK );
UIManager.put( "Menu.font", UIConstants.MENU_FONT );
UIManager.put( "Menu.foreground", UIConstants.BLACK );
UIManager.put( "Menu[Disabled].textForeground",
UIConstants.GREY_MIDDLE );
UIManager.put( "Menu[Enabled].textForeground", UIConstants.BLACK );
UIManager.put( "MenuBar.background", UIConstants.GREY_LIGHT );
UIManager.put( "MenuBar.disabled", UIConstants.GREY_LIGHT );
UIManager.put( "MenuBar.font", UIConstants.MENU_FONT );
UIManager.put( "MenuBar:Menu[Disabled].textForeground",
UIConstants.GREY_MIDDLE );
UIManager.put( "MenuBar:Menu[Enabled].textForeground",
UIConstants.BLACK );
UIManager.put( "MenuItem.background", UIConstants.GREY_LIGHT );
UIManager.put( "MenuItem.disabled", UIConstants.GREY_LIGHT );
UIManager.put( "MenuItem.disabledText", UIConstants.GREY_MIDDLE );
UIManager.put( "MenuItem.font", UIConstants.MENU_FONT );
UIManager.put( "MenuItem.foreground", UIConstants.BLACK );
UIManager.put( "MenuItem[Disabled].textForeground",
UIConstants.GREY_MIDDLE );
UIManager.put( "MenuItem[Enabled].textForeground",
UIConstants.BLACK );
// tree
UIManager.put( "Tree.background", UIConstants.BLACK );
}
private final void customizeNimbusLaF() {
UIManager.put( "control" , UIConstants.GREY_LIGHT );
UIManager.put( "nimbusAlertYellow" , UIConstants.YELLOW );
UIManager.put( "nimbusBase" , UIConstants.GREY_DARK );
UIManager.put( "nimbusDisabledText" , UIConstants.GREY_DARK );
UIManager.put( "nimbusFocus" , UIConstants.BLUE_LIGHT );
UIManager.put( "nimbusGreen" , UIConstants.GREEN );
UIManager.put( "nimbusInfoBlue" , UIConstants.BLUE_MIDDLE );
UIManager.put( "nimbusRed", UIConstants.RED );
UIManager.put( "nimbusSelectionBackground",
UIConstants.BLUE_MIDDLE );
UIManager.put( "background" ,UIConstants.GREY_LIGHT );
UIManager.put( "controlDkShadow" , UIConstants.GREY_DARK );
UIManager.put( "controlShadow", UIConstants.GREY_MIDDLE );
UIManager.put( "desktop", UIConstants.BLUE_MIDDLE );
UIManager.put( "menu", UIConstants.GREY_LIGHT );
UIManager.put( "nimbusBorder", UIConstants.GREY_MIDDLE );
UIManager.put( "nimbusSelection", UIConstants.BLUE_MIDDLE );
UIManager.put( "textBackground", UIConstants.BLUE_LIGHT );
UIManager.put( "textHighlight", UIConstants.BLUE_LIGHT );
UIManager.put( "textInactiveText", UIConstants.GREY_MIDDLE );
// panel
UIManager.put( "Panel.background", UIConstants.GREY_LIGHT );
UIManager.put( "Panel.disabled", UIConstants.GREY_LIGHT );
UIManager.put( "Panel.font", UIConstants.DEFAULT_FONT );
UIManager.put( "Panel.opaque", true );
// button
UIManager.put( "Button.background", UIConstants.GREY_LIGHT );
UIManager.put( "Button.disabled", UIConstants.GREY_LIGHT );
UIManager.put( "Button.disabledText", UIConstants.BLUE_MIDDLE );
UIManager.put( "Button.font", UIConstants.DEFAULT_FONT );
// menu
UIManager.put( "Menu.background", UIConstants.GREY_LIGHT );
UIManager.put( "Menu.disabled", UIConstants.GREY_LIGHT );
UIManager.put( "Menu.disabledText", UIConstants.GREY_DARK );
UIManager.put( "Menu.font", UIConstants.MENU_FONT );
UIManager.put( "Menu.foreground", UIConstants.BLACK );
UIManager.put( "Menu[Disabled].textForeground",
UIConstants.GREY_MIDDLE );
UIManager.put( "Menu[Enabled].textForeground", UIConstants.BLACK );
UIManager.put( "MenuBar.background", UIConstants.GREY_LIGHT );
UIManager.put( "MenuBar.disabled", UIConstants.GREY_LIGHT );
UIManager.put( "MenuBar.font", UIConstants.MENU_FONT );
UIManager.put( "MenuBar:Menu[Disabled].textForeground",
UIConstants.GREY_MIDDLE );
UIManager.put( "MenuBar:Menu[Enabled].textForeground",
UIConstants.BLACK );
UIManager.put( "MenuItem.background", UIConstants.GREY_LIGHT );
UIManager.put( "MenuItem.disabled", UIConstants.GREY_LIGHT );
UIManager.put( "MenuItem.disabledText", UIConstants.GREY_MIDDLE );
UIManager.put( "MenuItem.font", UIConstants.MENU_FONT );
UIManager.put( "MenuItem.foreground", UIConstants.BLACK );
UIManager.put( "MenuItem[Disabled].textForeground",
UIConstants.GREY_MIDDLE );
UIManager.put( "MenuItem[Enabled].textForeground",
UIConstants.BLACK );
// tree
UIManager.put( "Tree.background", UIConstants.BLACK );
}
中常量的数据类型属于
UIConstants
类型,具体取决于要设置的属性。
有人可以告诉我我的问题在哪里吗?
电贺 迈克尔