Java 如何使用UIDefault为swing创建新的外观

Java 如何使用UIDefault为swing创建新的外观,java,swing,look-and-feel,Java,Swing,Look And Feel,我正在为Java开发新的外观和感觉;此外观将导入材质样式 我已经使用UIDefault在外观中导入了更改,所以现在我必须卸载外观,这个操作有问题 look-and-feel con没有正确删除,现在我在所有操作中都使用了UIDefault映射,我认为这是一个错误,因为我的常量覆盖了旧常量,当我要删除look-and-feel时。新的外观和感觉不会覆盖我的常量 这就是我使用UIDefault的方式 @覆盖 受保护的void initComponentDefaults(UIDefaults表){ s

我正在为Java开发新的外观和感觉;此外观将导入材质样式

我已经使用UIDefault在外观中导入了更改,所以现在我必须卸载外观,这个操作有问题

look-and-feel con没有正确删除,现在我在所有操作中都使用了UIDefault映射,我认为这是一个错误,因为我的常量覆盖了旧常量,当我要删除look-and-feel时。新的外观和感觉不会覆盖我的常量

这就是我使用UIDefault的方式

@覆盖
受保护的void initComponentDefaults(UIDefaults表){
super.initComponentDefault(表);
表.放置(“按钮.突出显示”,材料颜色.灰色\u 400);
table.put(“Button.不透明”,false);
table.put(“Button.border”,BorderFactory.createEmptyByOrder(7,17,7,17));
表.放置(“按钮.背景”,材料颜色.灰色\u 200);
表.put(“按钮.前景”,材质颜色.COSMO_黑色);
表.put(“按钮.禁用背景”,材料颜色.COSMO_深灰色);
表.put(“按钮.禁止进入地面”,材料颜色.黑色);
table.put(“按钮[默认].background”,materialColor.LIGHT\u BLUE\u 500);
table.put(“按钮[默认]。前景”,颜色.白色);
table.put(“Button.font”,MaterialFontFactory.getInstance().getFont(MaterialFontFactory.BOLD));
//table.put(“按钮[默认值].mouseHoverColor”,MaterialColors.LIGHT\u BLUE\u 200);
表.put(“按钮.鼠标颜色”,材料颜色.灰色_500);
table.put(“Button.mouseHoverEnable”,true);
table.put(“Button.focusable”,true);
table.put(“按钮[焦点].color”,材质颜色.GRAY_900);
表.put(“按钮.禁用文本”,材料颜色.灰色_600);
table.put(“CheckBox.font”,MaterialFontFactory.getInstance().getFont(MaterialFontFactory.BOLD));
表格.put(“复选框.背景”,材料颜色.白色);
表格.put(“复选框.前景”,材质颜色.黑色);
表.put(“复选框.禁用文本”,材质颜色.COSMO\u STRONG\u灰色);
table.put(“CheckBox.icon”,新图像图标(MaterialImageFactory.getInstance().getImage(MaterialImageFactory.UNCHECKED_BLACK_BOX));
table.put(“CheckBox.selectedIcon”,新图像图标(MaterialImageFactory.getInstance().getImage(MaterialImageFactory.CHECKED_BLACK_BOX));
table.put(“ComboBox.font”,MaterialFontFactory.getInstance().getFont(MaterialFontFactory.REGULAR));
表.put(“组合框.背景”,材料颜色.白色);
表.put(“组合框.前景”,材质颜色.黑色);
表格.put(“组合框.边框”,材质边框.圆形线条颜色边框(材质颜色.COSMO_黑色));
put(“ComboBox.borderItems”,BorderFactory.createEmptyByOrder(1,2,0,1));
表.放置(“组合框.按钮背景”,材料颜色.白色);
table.put(“组合框[按钮].border”,BorderFactory.createLineBorder(MaterialColors.WHITE));
表.put(“组合框.禁用背景”,材料颜色.白色);
表.put(“ComboBox.DisabledForeforground”,材料颜色:灰色(900);
table.put(“ComboBox.selectionBackground”,MaterialColor.WHITE);
table.put(“组合框.选择前景”,颜色.黑色);
table.put(“ComboBox.SelectedDropDownBackground”,MaterialColors.COSMO\u LIGTH\u BLUE);
表.put(“组合框.鼠标颜色”,材料颜色.白色);
表.put(“组合框.无焦点颜色”,材质颜色.COSMO_黑色);
表.put(“组合框.聚焦颜色”,材料颜色.浅蓝色\u 400);
table.put(“ComboBox.mousehovernabled”,false);
table.put(“Menu.font”,MaterialFontFactory.getInstance().getFont(MaterialFontFactory.REGULAR));
table.put(“Menu.border”,BorderFactory.createEmptyByOrder(5,5,5,5));
表.放置(“菜单.背景”,颜色.白色);
表.放置(“菜单.前景”,颜色.黑色);
table.put(“Menu.不透明”,true);
table.put(“Menu.selectionBackground”,MaterialColors.GRAY_200);
table.put(“Menu.selection前台”,MaterialColors.BLACK);
table.put(“Menu.disabledForeground”,新颜色(0,0,0,100));
table.put(“Menu.menupopoffsety”,3);
table.put(“Menu[MouseOver].enable”,true);//TODO添加到master中
table.put(“MenuBar.font”,MaterialFontFactory.getInstance().getFont(MaterialFontFactory.BOLD));
table.put(“菜单栏.背景”,颜色.白色);
table.put(“菜单栏.边框”,材质边框.光影边框);
表.put(“菜单栏.前景”,材质颜色.黑色);
table.put(“MenuItem.disabledForeground”,新颜色(0,0,0,100));
表.put(“MenuItem.selectionBackground”,MaterialColor.GRAY\u 200);
table.put(“MenuItem.selection前台”,颜色为黑色);
table.put(“MenuItem.font”,MaterialFontFactory.getInstance().getFont(MaterialFontFactory.MEDIUM));
table.put(“MenuItem.background”,颜色为白色);
table.put(“MenuItem.前台”,颜色为黑色);
table.put(“MenuItem.border”,BorderFactory.createEmptyByOrder(5,0,5,0));
}
这是我的应用与我的外观和感觉

这是我在更改外观时使用的应用程序

这是更改外观的代码

public类DemoGUITest扩展了JFrame{
静止的{
试一试{
UIManager.setLookAndFeel(新材质lookandfeel());
JDialog.setDefaultLookAndFeelDecorated(true);
}捕获(无支持的LookandFeelException e){
e、 printStackTrace();
}
}
private static final DemoGUITest SINGLETON=new DemoGUITest();
public void reloadUI(){
SwingUtilities.updateComponentTreeUI(此);
}
public void使用(基本的外观和感觉){
试一试{
UIManager.setLookAndFeel(lookAndFeel);
这是一个.reloadUI();
}捕获(无支持的LookandFeelException e
table.put("OptionPane.warningDialog.titlePane.shadow", new ColorUIResource(MaterialColors.COSMO_STRONG_GRAY));
table.put("FormattedTextField.border", new BorderUIResource(BorderFactory.createEmptyBorder(3, 5, 2, 5)));
table.put("List.font", new FontUIResource(MaterialFontFactory.getInstance().getFont(MaterialFontFactory.MEDIUM)));