【问题标题】:Java JTable TableCellRenderer problemsJava JTable TableCellRenderer 问题
【发布时间】:2011-01-23 11:50:36
【问题描述】:

我在一个程序中实现了一个名为 scrTbl 的 JTable,我希望能够根据一个名为“up”的外部布尔变量来改变该表的一列中的文本颜色。我与这项工作相关的代码如下。

TableColumn tcol = scrTbl.getColumnModel().getColumn(9);
tcol.setCellRenderer(new CustomTableCellRenderer());

public class CustomTableCellRenderer extends DefaultTableCellRenderer
{
    @Override
    public Component getTableCellRendererComponent (JTable table,    
    Object obj, boolean isSelected, boolean hasFocus, int row, int 
    column)
    {
        Component cell = super.getTableCellRendererComponent(table, 
          obj, isSelected, hasFocus, row, column);

        if (up && (row == nmbrStocks))
        {
            cell.setForeground(Color.green);
        }
        if ((!up) && (row == nmbrStocks))
        {
            cell.setForeground(Color.red);
        }
        return cell;
    }//Component
} //class getTableCell...

关键是根据 up 的值将第 9 列和特定行(索引 nmbrStocks)的文本颜色设置为绿色或红色。

但是当它运行时,它会将所有文本设置为绿色。每次写入第 9 列中的单元格时是否调用渲染器,或者协议是什么?

提前感谢您的帮助。

【问题讨论】:

    标签: jtable tablecellrenderer


    【解决方案1】:

    由于您只想修改一列,请调整代码以指定列和行

        if (row == nmbrStocks && column == the_desired_column_you_wish_to_change)
        {
          if (up){
            cell.setForeground(Color.green);
          }else{
            cell.setForeground(Color.red);
          }
        }
    

    【讨论】:

      猜你喜欢
      • 2011-11-09
      • 1970-01-01
      • 2013-08-12
      • 2012-01-03
      • 1970-01-01
      • 2014-01-07
      • 2017-04-29
      • 2017-01-02
      • 1970-01-01
      相关资源
      最近更新 更多