2

だから私はカスタムCellEditorsとCellRenderersを持っています

component.setForeground(isSelected ? table.getSelectionForeground() : table.getForeground());
component.setBackground(isSelected ? table.getSelectionBackground() : table.getBackground());
component.setOpaque(true);

私のgetTableCellRendererCompoentでは、色は他のすべての行でのみ一致します。これは、私が試したほとんどのルックアンドフィールが交互になっているように見えるためです。表の他の部分がどのように見えるかに一致するように色の値を取得するにはどうすればよいですか?また、DefaultTableCellRendererの子孫であるレンダラーと一致するように素敵な境界線を作成できるようにしたいと思います。

DefaultTableCellRendererを分析しようとしましたが、このUIオブジェクトを追跡しようとして迷子になりました。UIManagerからプルするために適切なプロパティが必要ですか?正しい方向へのリードは大歓迎です。

おかげさまで、このサイトは素晴らしいです。ジョシュア

4

1 に答える 1

4

はい、Swing パレットの色を使用する必要があります。例えば:

final Color tableBackground = javax.swing.UIManager.getDefaults().getColor("Table.background");

テーブルのカラー キー値は次のとおりです。

  • Table.background Table.dropLineColor
  • Table.dropLineShortColor
  • Table.focusCellBackground
  • Table.focusCellForeground
  • Table.foreground Table.gridColor
  • Table.selectionBackground
  • Table.selectionForeground
  • Table.sortIconColor
  • TableHeader.background
  • TableHeader.focusCellBackground
  • TableHeader.foreground

または、システム カラーを使用することもできます。例えば:

通常の背景: SystemColor.window
選択された背景: SystemColor.textHighlight
通常の前景: SystemColor.text
選択された前景: SystemColor.textText

于 2009-08-14T04:11:48.143 に答える