最終的に、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の最初のコンポーネントであるように見えました。他の誰かが私にもっと「エレガント」なものを見せてくれる場合に備えて、これをもう1日か2日開いたままにしておきます。