Java 1.6 で JTableを使用しています。
JTableのヘッダーカラムでのソートを setAutoCreateRowSorterや
TableRowSorter を使用し、ソート可能にしました。
すると、カラム名に ソートのアイコン(△)が表示されるようになり、
ソート可能となりました。
ですが、ヘッダーカラムの背景色を設定しようとし、setBackgroundで
Colorを指定しても、効果がありません。
以下のコードです。
java
1 JTableHeader tableHeader = jTable.getTableHeader(); 2 tableHeader.setBackground( Color.BLACK ); // これは効かない 3 tableHeader.setForeground( Color.BLACK ); // これは効く 4 tableHeader.setBorder( // これは効いてそう 5 javax.swing.BorderFactory.createEtchedBorder( 6 javax.swing.border.EtchedBorder.RAISED, colors[2], null ) ); 7 8 tableHeader.setFont( font ); // これは効く 9 tableHeader.setOpaque( true ); 10
この他に、TableCellRenderer をJLabel 継承で実装したし、内部で色を指定したりしました。
この場合、背景色を設定可能でしたが、ソートアイコンがカラム名より
消えてしまいました。
そもそも、実装が間違っていますか。
実行すると、このようになります。
これは、tableHeader.setBackground( Color.BLUE );
tableHeader.setForeground( Color.WHITE ); です。
java( ビルド 1.6.0_13-b03)
バージョンが古い為でしょうか。
java
1 JTable jTable = new JTable( 3,3 ); 2 jTable.setAutoCreateRowSorter( true ); 3 JTableHeader head = jTable.getTableHeader(); 4 head.setBackground( Color.BLUE ); 5 head.setForeground( Color.WHITE ); 6 head.setOpaque( true ); 7 jScrollPane1.setViewportView( jTable ); 8
この後、java1.8 Update40 64-bitで、同様のコードを実装しましたが、
残念ながら、結果は一緒でした。
JScrollPaneは、JPanelに addしています。
これが、問題でしょうか。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/02/14 08:20
2016/02/14 09:00
2016/02/14 09:41
2016/02/14 11:31
2016/02/15 05:16 編集