JTableの一部のセルの色を変更しようとしています。簡単な例でgetTableCellRendererComponentをオーバーライドしようとしましたが、うまく動作します。色を変更するgetTableCellRendererComponentでJTableセルを使用していません
boxTable=Box.createHorizontalBox();
box2Table.add(boxTable);
//JTable
tablaContador = new JTable(datosContador,cabeceraContador);
//MODIF COLOR
tablaContador.setDefaultRenderer(Object.class, new ColorRenderer());
がやって:
はSystem.out.println(tablaContador.getColumnClass(3));
私が知ることができますしかし、私は私のプロジェクトは何もで同じことを行うときには、私はこのようなボックスで私のJTableと私のJPanelを持って
...変更しますsetDefaultRendererの最初のパラメータがObject.classであること 問題がここにあるかどうかわかりません...テーブルに文字列しかありませんが、String.classを試しても何も起こりません。
それから私は、JTableのの細胞のいくつかのことを変更します。
tablaContador.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
boxTable.add(tablaContador);
//Align cells
for (int i=0; i<cabeceraContador.length;i++){
tablaContador.getColumnModel().getColumn(i).setCellRenderer(alinearCeldas);
}
//Modify cells' width
tablaContador.getColumnModel().getColumn(0).setMinWidth(150);
for (int i=1; i<cabeceraContador.length;i++){
tablaContador.getColumnModel().getColumn(i).setMaxWidth(40);
}
//Scroll for the Table
scrollContador=new JScrollPane(tablaContador,JScrollPane.VERTICAL_SCROLLBAR_NEVER,JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
scrollContador.setPreferredSize(new Dimension(1000,80));
scrollContador.setMinimumSize(new Dimension(1000,80));
scrollContador.setMaximumSize(new Dimension(2000,80));
//Add scroll to the box
box2Table.add(scrollContador);
そして、私のColorRendererクラスは次のとおりです。
public class ColorRenderer extends DefaultTableCellRenderer{
private Component c;
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus,int row, int column) {
c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
c.setBackground(Color.BLUE);
return c;
}
}
ので、それは私がなぜ知らない私のプロジェクトでは動作しません。
thaks!
:ここ
は、カスタムレンダラの簡単な例であります)。これは実際にあなたのコードとあなたの質問を完全に理解することに大きな違いをもたらします。 –この質問は、もともとは:http://stackoverflow.com/questions/18253881/custom-tablecellrenderer-treetablecellrenderer-doesnt-render-table-cellsの複製として閉じられました。このレンダラーはDefaultTableCellRenderer(不透明)を「拡張」しているため、他の質問がTableCellRendererを「実装」しているため、重複しているとは思わない。この場合、ラベルを不透明にすることを心配する必要がある。 – camickr
@HovercraftFullOfEels、 'あなたはあなたのカスタムレンダラーを不透明にしています...デフォルトではありません ' - DefaultTableCellRendererはデフォルトでは不透明です。 – camickr