为特定Java定制一些组件UI';s LookAndFeel、UIManager、UIDefaults

为特定Java定制一些组件UI';s LookAndFeel、UIManager、UIDefaults,java,swing,customization,look-and-feel,overriding,Java,Swing,Customization,Look And Feel,Overriding,我想根据LookAndFeel更改对象的默认值 对于Java上的LookAndFeel,有些对象相同,但值不同。 例如: 您可以看到,它具有相同的对象,在本例中为Slider.background,但根据LookAndFeel的不同,它具有不同的默认值 我想知道:如何更改Nimbus、Metal和Motif的默认值(在它们之间建立另一个不同的值)。 例如: Metal -> Slider.background:Color.RED Nimbus -> Slider.background

我想根据LookAndFeel更改对象的默认值

对于Java上的LookAndFeel,有些对象相同,但值不同。 例如:

您可以看到,它具有相同的对象,在本例中为
Slider.background
,但根据LookAndFeel的不同,它具有不同的默认值

我想知道:如何更改Nimbus、Metal和Motif的默认值(在它们之间建立另一个不同的值)。

例如:

Metal -> Slider.background:Color.RED
Nimbus -> Slider.background:Color.GREEN
Motif -> Slider.background:Color.BLUE
下一个方法的问题是所有的更改,但是如何选择特定的LAF?

UIDefaults sliderDefaults = new UIDefaults();
sliderDefaults.put("Slider.background", THE_COLOR_SELECTED);
UIManager.put("Slider.background", THE_COLOR_SELECTED);
我不想设置LookAndFeel来更改其值的组件。。。我想在LookAndFeel之前进行更改,然后再应用更改后的LAF(我不知道是否可能)

假设存在这样的方法(这确实不起作用):

UIManager.getLookAndFeel("javax.swing.plaf.metal.MetalLookAn‌​dFeel").put("Slider.‌​background", Color.RED); 
UIManager.getLookAndFeel("com.sun.java.swing.plaf.motif.Moti‌​fLookAndFeel").put("‌​Slider.background", Color.GREEN); 
UIManager.getLookAndFeel("javax.swing.plaf.nimbus.NimbusLook‌​AndFeel").put("Slide‌​r.background", Color.BLUE);
根据LookAndFeel,我正在为同一对象建立不同的默认颜色


注意:该颜色仅用于演示鼠海豚,因为我想对其他类型的物体使用相同的原理。

问题是它改变了所有的LAF,我用它来改变所有外观和感觉的字体。如何根据LAF设置特定值?可能是自定义的
组件UI
,如下所示。请不要删除我将考虑的注释。。。现在,如果您注意到
Nimbus
GTK
使用相同的SliderUI
javax.swing.plaf.synth.SynthLookAndFeel
,那么一个如何变化,而另一个如何变化?我真的不明白您想要什么。也许类似于。注释中的代码很难阅读,但它并不能说明您想要做什么。请编辑您的问题,以包括新代码以及显示您要解决的问题的。另请参见本文中的
updateUI()
的自定义实现。
UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel");
UIManager.setLookAndFeel("javax.swing.plaf.nimbus.NimbusLookAndFeel");
UIManager.getLookAndFeel("javax.swing.plaf.metal.MetalLookAn‌​dFeel").put("Slider.‌​background", Color.RED); 
UIManager.getLookAndFeel("com.sun.java.swing.plaf.motif.Moti‌​fLookAndFeel").put("‌​Slider.background", Color.GREEN); 
UIManager.getLookAndFeel("javax.swing.plaf.nimbus.NimbusLook‌​AndFeel").put("Slide‌​r.background", Color.BLUE);