0

これは私の前の質問へのフォローアップの質問です:

Java でファイル タイプ フィルタを使用した FileDialog が必要

私は JFileChooser (FileDialog の代わりにそれを使用して、ファイル タイプ フィルタを使用できるようにします) を取得し、左側の小さなパネルを除いて、暗い配色オプション用に適切にスタイルを設定することができました。一番上のものが「ToolBar.background」であることが最終的にわかりましたが、それが何と呼ばれているのかわかりません。

ヘルプ?

代替テキスト http://img151.imageshack.us/img151/6816/filedialog.jpg

4

2 に答える 2

0

最終的に、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日開いたままにしておきます。

于 2009-08-12T15:10:55.453 に答える
0

色を変更する方法はわかりませんが、それを取り除く方法は知っています:

UIManager.put("FileChooser.noPlacesBar", Boolean.TRUE);

または、本当にパネルを表示したい場合は、ソース コードを検索して、そのパネルがどのように作成されているかを確認し、デフォルトの色をオーバーライドできるかどうかを確認します。

于 2009-08-11T02:12:43.763 に答える