2011-10-15 55 views
7

私が試してみた:JTableのヘッダーの背景色を変更するにはどうすればよいですか?

table.getTableHeader().setBackground(Color.BLACK); 

は動作しません。

EDIT:このコードは私のプロジェクトでは機能しません。他のプロジェクトでも動作します。私は、色の変化を止める性質を変えたかもしれない。または、NetBeansにデフォルトの色を維持するプロパティがあります。私は他の何かに気づいた。私のプロジェクトのヘッダーの色は、別の方法で輝いています。色の変更が動作する例では、別のグラフィックスが表示されます。

EDIT 2:その他。私は、ボタンの色も変わらないことに気づいた。一般的なものでなければなりません。お役に立てれば。残念ながら、私はこの問題を再現することができないので、SSCCEはこのケースでは動作しません。私は確かに正しいコンポーネント名を使用しています。

+0

関連項目[コントロールをJTableのJTableHeaderに挿入する方法は?](http://stackoverflow.com/questions/7137786/how-can-i-put-a-control-in-the-jtableheader -of-a-jtable)。 – trashgod

+0

これは、デフォルトの色を維持しているNetBeansと、コード内のバグに関連するものとは関係ありませんが、「このコードは自分のプロジェクトでのみ動作します」というステートメントだけで、コード、好ましくはsscce、私たちの誰かが、あなたが少し深くデバッグしようと提案する以外に、あなたに何か助けを与えることはできません。おそらく、ヘッダーの色を変更しようとしているテーブルが、表示されているテーブルオブジェクトと同じではありませんが、わかりやすくコンパイル可能なコードがない場合、これは私のSWAGです。 –

答えて

1

解決しました。 NetBeansで :

  • 右プロジェクトの名前をクリックした
  • プロパティ
  • アプリケーション - デスクトップアプリケーション
  • ルック・アンド・フィール: 'Javaのデフォルト' を選択し
  • (システムのデフォルトでは動作しませんでした)プロジェクトを実行する前にクリーンでリビルドすることを忘れないでください

また、プロジェクト全体のグラフィックスが変更されました。

+0

このオプションは、['Java Desktop Application']タイプのNetBeansプロジェクトでのみ利用可能です(http://stackoverflow.com/questions/2561480/netbeans-gui-editor-generating-its-own-incomprehensible-code/ 2561540#2561540)。タグ[タグ:jsr296]を含めるように質問を更新することを検討してください。 – trashgod

+0

私はまだそれが正しい参照のためのプロパティを設定していない可能性がありますコードで解決することができると思う。 –

+0

私は、あなたのプロジェクト*をソースコード*でjarしてどこかにアップロードし、それを見てみましょう。 –

11

私のために働く。ここに私のSSCCEです:

import java.awt.*; 
import javax.swing.*; 
import javax.swing.table.*; 

public class TableHeaderBackground { 
    public static void main(String[] args) { 
     Integer[][] data = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}; 
     String[] cols = {"A", "B", "C"}; 

     JTable table = new JTable(data, cols); 

     JTableHeader header = table.getTableHeader(); 
     header.setBackground(Color.black); 
     header.setForeground(Color.yellow); 

     JOptionPane.showMessageDialog(null, new JScrollPane(table)); 
    } 
} 

これはあなたを助けていない場合、私たちは間違っているものを見ることができるようにあなたがSSCCE独自に作成して投稿することを示唆しています。

+1

実際に動作します。私のテーブルのためには動作しません。 EDITを参照してください。 –

3

テーブルヘッダーは、テーブルセルなどのレンダラーコンポーネントも使用します。この時

見て:あなたは動的な色を必要としない場合

table.getTableHeader().setDefaultRenderer(new DefaultTableRenderer(){ 
    { 
    // you need to set it to opaque 
    setOpaque(true); 
    } 

@Override 
public Component getTableCellRendererComponent(final JTable table, 
    final Object value, final boolean isSelected, final boolean hasFocus, 
    final int row, final int column) { 
    // set the background 
    setBackground(yourDesiredColor); 
    } 
}); 

、あなたはまた、レンダラのコンストラクタで色を設定することができます。

5

私はあなたがこれを行うことをお勧め:

DefaultTableCellRenderer headerRenderer = new DefaultTableCellRenderer(); 
headerRenderer.setBackground(new Color(239, 198, 46)); 

for (int i = 0; i < myJTable.getModel().getColumnCount(); i++) { 
     myJTable.getColumnModel().getColumn(i).setHeaderRenderer(headerRenderer); 
} 
7

は table.getTableHeader()setOpaque(false)を...これを試してみてください;。 。

は次にJTableのヘッダ

table.getTableHeader()setBackground(Color.BLACK)の背景を設定します。

関連する問題