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

标签 java swing jtable

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

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

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

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

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

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

有人可以帮我吗?

感谢您给我的所有帮助。

问候。

最佳答案

您需要使用TableCellRenderer。该组件就像一个橡皮图章,可以在表格上移动并在需要时绘制单元格 - 与 Swing 中的普通组件不同,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));
}

关于java - 如何更改默认 jtable 中特定行的前景色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23270420/

相关文章:

java - 如何根据从另一个表中选择的行更改表内容

java - 为什么 OpenJDK 发布的新 Java 8 镜像不再基于 Alpine,而是基于 Debian 10(Buster)?

java - HashMap 与数组的比较

java - 如何从JList中选择多个项目并将它们保存到java中单列的MySQL数据库中

java - 小程序安全设置?

java - 如何停止鼠标点击?

java - HBase 客户端 - java.lang.ClassNotFoundException : org. apache.hadoop.crypto.key.KeyProviderTokenIssuer

java - Spring 中接口(interface)的依赖注入(inject)

java - 如何设置代码以便允许按钮中使用值 "X"和 "O"?

java - TableModel.fireTableCellUpdated(tableRowIndex, tableColumnIndex) 没有更新 JTable 中的单元格