java - JTable 中的单元格 setBorder 更改附近单元格背景

标签 java swing jtable selection nimbus

我创建了一个包含 4 列的 JTable,其中填充了 txt 文件中的数据。因此,不会对每个单元格中插入的数据类型进行验证。第二列和第三列必须填充“int”。 我想为这两列中不包含“int”值的每个单元格设置红色字体。

问题:附近单元格的背景也被修改。我该如何解决这个问题?

/**
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates and open the template
 * in the editor.
 */
package rdjcsv;

import java.awt.Color;
import javax.swing.BorderFactory;
import static javax.swing.BorderFactory.createEmptyBorder;

public class MyCellRendererKO extends javax.swing.table.DefaultTableCellRenderer {

    public MyCellRendererKO() {
        setOpaque(true); //MUST do this for background to show up.
    }

    public java.awt.Component getTableCellRendererComponent(
        javax.swing.JTabletable, java.lang.Object value, boolean isSelected,
        boolean hasFocus, int row, int column) {
        if (isNumeric(table.getValueAt(row, column).toString())) {
            //setBorder(createEmptyBorder());
            setForeground(Color.black);
            setValue(value);
        } else {
            setForeground(Color.red);
            //setBorder(BorderFactory.createLineBorder(Color.RED,1));
            setValue(value);
        }
        return this;
    }
}
…
MyCellRendererKO mcr = new MyCellRendererKO();
jTable1.getColumnModel().getColumn(i).setCellRenderer(mcr);

image

最佳答案

渲染器的第一条语句应该是:

super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);

这将在您应用自定义之前重置渲染器默认属性。

此外,不需要 setValue(...) 语句,因为这将为您完成。

关于java - JTable 中的单元格 setBorder 更改附近单元格背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34928753/

相关文章:

java - 使用 Java 和 JMX/MBean 访问 Weblogic JMS

java - 为什么我无法隐藏 Vaadin 表中的自动编号列?

java对象间通信

Java - (非内部)可运行类中的 Actionlistener 不执行

java - JProgressBar 中的颜色

java - 为什么我的 android Activity 偶尔会崩溃并显示 "No adapter attached; skipping layout"?

java - 启动 Java Swing 桌面应用程序的正确方法

java - 将 JTable 中的电话号码列格式设置为 "(area) prefix-number"

java - Java 中 GUI 的 JUnit 测试

java - 在 JTable 中添加带有单独工具提示的多个图标