如何更改默认jtable中特定行中的前景色

时间:2014-04-24 13:31:05

标签: java swing jtable

我的应用程序中有一个默认的jtable。我想做一些检查,并更改第一列等于close的所有行的颜色。

我一直试图这样做,我们得到的最多就是:

 String x =  jTable.getModel().getValueAt(0, 0).toString();

    if(x.equals("close")) 
 {
     jTable.setForeground(Color.red);
      }

但是我的方式改变了所有线条的颜色。并且只检查表格的第一个元素。

我喜欢做所有检查行,只更改第一列等于close的人。

有人可以帮我吗?

感谢你们给我的任何帮助。

问候。

4 个答案:

答案 0 :(得分:1)

您必须实施TableCellRenderer。看一下oracle的JTable教程的Using Custom Renderers

答案 1 :(得分:0)

public Component getTableCellRendererComponent(JTable table,
    Object value,
    boolean isSelected,
    boolean hasFocus, 
    int row, int column) 
{
 Component cell = super.getTableCellRendererComponent(table, value, isSelected,
        hasFocus, row, column);
 String str = combo.getSelectedItem().toString();
 if (value.toString().equalsIgnoreCase(str))
 {
    cell.setBackground(Color.RED);
 }
 else
 {
    cell.setBackground(null);
 }

 return cell;
}

答案 2 :(得分:0)

您需要使用TableCellRenderer。这个组件就像一个橡皮图章,可以在桌子上移动并在需要时绘制单元格 - 与Swing中的普通组件不同,它在一个位置具有较长的使用寿命。

以下是您可以在桌面上使用的示例。

class MyTableCellRenderer extends JLabel implements TableCellRenderer {
    @Override
    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
        if (table.getModel().getValueAt(row, 0).equals("close")) {
            setForeground(Color.RED);
        } else {
            setForeground(Color.BLACK);
        }
        setText(String.valueOf(value));
        return this;
    }
}

public JTableFrame() {
    JTable table = new JTable();
    // Give your table some data:
    // table.setModel(new BlahTableModel());

    // Install the renderer on all columns
    MyTableCellRenderer renderer = new MyTableCellRenderer();
    table.getColumnModel().getColumn(0).setCellRenderer(renderer);
    table.getColumnModel().getColumn(1).setCellRenderer(renderer);


    getContentPane().add(BorderLayout.CENTER, new JScrollPane(table));
}

答案 3 :(得分:0)

查看Table Row Rendering这比使用自定义渲染器更简单,因为您无需担心为表格中的每种数据类型创建自定义渲染器。