Java 如何更改JColorChooser的样例组件上的颜色?

Java 如何更改JColorChooser的样例组件上的颜色?,java,jpanel,jcolorchooser,Java,Jpanel,Jcolorchooser,我正在尝试制作一个包含JColorChooser样例组件的绘图应用程序,并试图使我的UI具有某种颜色。除了“最近”框周围的一个小区域外,我可以通过设置几乎所有地方的背景来改变颜色。 如有任何帮助,我将在下面粘贴部分代码以供参考: //Sets up color chooser chooser = new JColorChooser(Color.BLACK); AbstractColorChooserPanel[] panels = chooser.getChooserPanels()

我正在尝试制作一个包含JColorChooser样例组件的绘图应用程序,并试图使我的UI具有某种颜色。除了“最近”框周围的一个小区域外,我可以通过设置几乎所有地方的背景来改变颜色。

如有任何帮助,我将在下面粘贴部分代码以供参考:

 //Sets up color chooser
  chooser = new JColorChooser(Color.BLACK);
  AbstractColorChooserPanel[] panels = chooser.getChooserPanels();
  for (int i = 0; i < panels.length; i++) {
     if (!panels[i].getDisplayName().equalsIgnoreCase("Swatches"))
         chooser.removeChooserPanel(panels[i]);
     else {
        panels[i].setBackground(new Color(0, 155, 228));
     }
  }
  chooser.setPreviewPanel(new JPanel());
  //Sets up size slider
  sizeSlide = new JSlider(1, 45);

  //Adds Color/Size to one control panel, adds new panel to bottom of 
  //main
  optionP = new JPanel();
  optionP.setBackground(new Color(0, 155, 228));
  optionP.setLayout(new BorderLayout());
  optionP.add(sizeSlide, BorderLayout.EAST);
  optionP.add(chooser, BorderLayout.WEST);
  this.add(optionP, BorderLayout.SOUTH);    
//设置颜色选择器
选择器=新JColorChooser(Color.BLACK);
AbstractColorChooserPanel[]panels=chooser.getChooserPanels();
对于(int i=0;i
我认为如果不通过JComponent树进行复杂的搜索,这是不可能做到的。但即使比我还无法改变背景色

编辑: 我终于用以下代码更改了最近面板的背景色:

JColorChooser chooser = new JColorChooser(Color.BLACK);
AbstractColorChooserPanel[] panels = chooser.getChooserPanels();
for (int i = 0; i < panels.length; i++) {
    if (!panels[i].getDisplayName().equalsIgnoreCase("Swatches")) {
        chooser.removeChooserPanel(panels[i]);
    } else {
        panels[i].setBackground(new Color(0, 155, 228));
        // placing code to change recent panel background color here
        // will not work for some odd reason
        // JComponent component = (JComponent) panels[i].getComponent(0);
        // component.setBackground(new Color(0, 155, 228));
    }
}
AbstractColorChooserPanel panel = chooser.getChooserPanels()[0];
JComponent component = (JComponent) panel.getComponent(0);
component.setBackground(new Color(0, 155, 228));
可能重复的
UIManager.put("Panel.background", new ColorUIResource(0, 155, 228));