我想根据LookAndFeel更改对象的默认值。
对于Java上的LookAndFeel,有些具有相同的对象,但值不同。 例如:
Metal : javax.swing.plaf.metal.MetalLookAndFeel
Slider.background : javax.swing.plaf.ColorUIResource[r=238,g=238,b=238]
SliderUI : javax.swing.plaf.metal.MetalSliderUI
Nimbus : javax.swing.plaf.nimbus.NimbusLookAndFeel
Slider.background : DerivedColor(color=214,217,223 parent=control offsets=0.0,0.0,0.0,0 pColor=214,217,223
SliderUI : javax.swing.plaf.synth.SynthLookAndFeel
CDE/Motif : com.sun.java.swing.plaf.motif.MotifLookAndFeel
Slider.background : javax.swing.plaf.ColorUIResource[r=147,g=151,b=165]
SliderUI : com.sun.java.swing.plaf.motif.MotifSliderUI
GTK+ : com.sun.java.swing.plaf.gtk.GTKLookAndFeel
Slider.background : javax.swing.plaf.ColorUIResource[r=214,g=210,b=208]
SliderUI : javax.swing.plaf.synth.SynthLookAndFeel
Mac OS X : com.apple.laf.AquaLookAndFeel
Slider.background : com.apple.laf.AquaImageFactory$SystemColorProxy[r=238,g=238,b=238]
SliderUI : com.apple.laf.AquaSliderUI
Windows : com.sun.java.swing.plaf.windows.WindowsLookAndFeel
Slider.background : javax.swing.plaf.ColorUIResource[r=240,g=240,b=240]
SliderUI : com.sun.java.swing.plaf.windows.WindowsSliderUI
Windows Classic : com.sun.java.swing.plaf.windows.WindowsClassicLookAndFeel
Slider.background : javax.swing.plaf.ColorUIResource[r=240,g=240,b=240]
SliderUI : com.sun.java.swing.plaf.windows.WindowsSliderUI
.
根据LookAndFeel,您可以看到它具有相同的对象,在本例中为Slider.background
,但具有不同的默认值。
我想知道:如何更改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.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.MetalLookAndFeel").put("Slider.background", Color.RED);
UIManager.getLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel").put("Slider.background", Color.GREEN);
UIManager.getLookAndFeel("javax.swing.plaf.nimbus.NimbusLookAndFeel").put("Slider.background", Color.BLUE);
根据LookAndFeel,我正在为同一个对象建立不同的DEFAULT颜色。
注意: Color 仅适用于演示海豚,因为我想对其他类型的对象使用相同的原则。