Я в итоге выяснил, что имя свойства, посмотрев в исходном коде для WindowsPlacesBar:
Color bgColor = new Color(UIManager.getColor("ToolBar.shadow").getRGB());
setBackground(bgColor);
Я установил ToolBar.shadow, но ничего не изменилось. Дальнейшее изучение в конечном итоге помогло мне понять, что свойство XPStyle.subAppName переопределяет все, что я вставил. Я добавил этот фрагмент кода:
JFileChooser chooser = new JFileChooser();
setWindowsPlacesBackground( chooser );
private void setWindowsPlacesBackground( Container con ) {
Component[] jc = con.getComponents();
for( int i = 0; i < jc.length; i++ ) {
Component c = jc[i];
if( c instanceof WindowsPlacesBar ) {
((WindowsPlacesBar) c).putClientProperty("XPStyle.subAppName", null);
return;
}
if( c instanceof Container ) {
setWindowsPlacesBackground( (Container)c );
}
}
}
Сняв это свойство, он позволил моим цветам и схемам проявиться. Я все еще чувствую, что должен быть более чистый способ его сброса, чем перебор контейнеров, но я не смог его найти. Казалось, что WindowsPlacesBar всегда был первым компонентом в FileChooser. Я собираюсь оставить это открытым еще на день или два на тот случай, если кто-нибудь еще покажет мне что-нибудь более «элегантное».