ニンバスのルックアンドフィールのための簡単なセルレンダラーを設計します

StackOverflow https://stackoverflow.com/questions/1324012

質問

私は数JLabelsで構成されているシンプルっぽいセルレンダラーを持っている(レンダラ自体がJPanelを拡張)し、私はそれがニンバスのルックアンドフィールに賢明にレンダリングするために取得しようとしています。基本的に何が起こっていることは、軽くの行(ニンバスを有するように、の代替行着色)で、私の特定のセルレンダラーの両方よりはるかに暗いテーブルの背景色を(使用していることです軽く、暗いの色)。私のレンダラでは私が行います。

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を使用していたように、これは、のスカラの表のセルレンダラーに問題があることが判明。下記の受け入れ答えは、Javaプログラムではうまく動作します。個別のご質問は、ここに提出しました。

役に立ちましたか?

解決

コードのあなたの最初の部分fine.Iはあなたが別の行とそうでないtable.getBackground()のためUIManager.getColor("Table.alternateRowColor")を使用する必要が思えば。選択された行のtable.getSelectionBackground()を使用します。だからあなたのコードは次のようになります。

if (isSelected) {
    setBackground(table.getSelectionBackground());
}
else {
    if ( row % 2 == 0 ) {
       setBackground(UIManager.getColor("Table.alternateRowColor"));
    } else { 
       setBackground(table.getBackground());
    }
}

あなたのパネルが不透明であるとラベルが透明であることを確認することを忘れないでください。

ここでニンバスUIのデフォルトに良いのリンクは次のとおりです。 http://www.duncanjauncey.com/java/ui /uimanager/UIDefaults_Java1.6.0_11_Windows_2000_5.0_Nimbus.htmlする

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top