私はいくつかのsで構成されるシンプルなセルレンダラーを持っていJLabel
ます(レンダラー自体は拡張JPanel
されます)。ニンバスのルックアンドフィールで適切にレンダリングできるようにしようとしています。基本的に、明るい行では(Nimbusには代替の行の色があるため)、特定のセルレンダラーがテーブルの背景色(明るい行と暗い行の両方の色よりもはるかに暗い)を使用しています。私のレンダラーでは、次のことを行います。
if (isSelected) {
setBackground(table.getSelectionBackground);
}
else {
setBackground(table.getBackground);
}
このコードブロック全体をコメントアウトすると、すべての行が暗い行の色になります(テーブルの背景ではなく、代替色でもありません)。何が起こっているのかさえ理解できません!上記のコードスニペットは、背景色が異なるセルをどのように生成しますか?table.getBackground
メソッドを呼び出すたびに色が変わりますか?
このコードスニペットを使用してみました:
Color alternateColor = sun.swing.DefaultLookup.getColor(
peer,
peer.getUI,
"Table.alternateRowColor");
if (alternateColor != null && row % 2 == 0)
setBackground(alternateColor);
これはDefaultTableCellRenderer
クラスにあります。そして、それはまったく影響を与えていないようです。誰かがニンバスで動作するカスタムセルレンダラーを持っていますか?
編集:誰かが興味を持っているなら、私は実際にJavaではなくScalaを使用していたので、これはScalaテーブルセルレンダラーの問題であることが判明しました。以下の受け入れられた答えは、Javaプログラムでうまく機能します。ここに提出された別の質問。