更改JTable的特定单元格中的字体颜色?

令人困惑的Calc

在开始之前,我已经查看了一些解决方案和文档。我似乎无法弄清楚为什么我的代码无法按照我认为的方式工作。我已经扩展了DefaultTableCellRenderer,但是我不相信它正在被应用-否则我会将事情弄乱了。

以下是发布此问题之前我调查过的主题/网站:

我意识到第一个链接使用HTML来更改字体颜色,但是我认为我的处理方式应该会产生相同的结果。

为了使那些想帮助我解决问题的人更轻松,我创建了一个SSCCE。

import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Font;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;


public class TableTest {

    private static final int IMPORTANT_COLUMN = 2;

    public static void createAndShowGUI() {
        Object[][] data = new Object[2][4];
        //create sample data
        String[] realRowData = { "1", "One", "1.0.2", "compile" };
        String[] fakeRowData = { "2", "Two", "1.3.2-FAKE", "compile" };
        //populate sample data
        for(int i = 0; i < realRowData.length; i++) {
            data[0][i] = realRowData[i];
            data[1][i] = fakeRowData[i];
        }

        //set up tableModel
        JTable table = new JTable();
        table.setModel(new DefaultTableModel(data, 
                new String[] { "ID #", "Group #", "version", "Action" }) 

            {
                Class[] types = new Class[] {
                    Integer.class, String.class, String.class, String.class
                };

                boolean[] editable = new boolean[] {
                    false, false, true, false  
                };

                @Override
                public Class getColumnClass(int columnIndex) {
                    return types[columnIndex];
                }

                @Override
                public boolean isCellEditable(int rowIndex, int columnIndex) {
                    return editable[columnIndex];
                }
            });

        //set custom renderer on table
        table.setDefaultRenderer(String.class, new CustomTableRenderer());

        //create frame to place table
        JFrame f = new JFrame();
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setMinimumSize(new Dimension(400, 400));
        JScrollPane scrollPane = new JScrollPane();
        scrollPane.setViewportView(table);
        f.add(scrollPane);
        f.pack();
        f.setVisible(true);

    }

    //MAIN
    public static void main(String[] args) {
        javax.swing.SwingUtilities.invokeLater(new Runnable() {

            public void run() {
                createAndShowGUI();
            }
        });
    }

    //Custom DefaultTableCellRenderer
    public static class CustomTableRenderer extends DefaultTableCellRenderer {
        public Component getTableCellRenderer(JTable table, Object value,
                boolean isSelected, boolean hasFocus, int row, int column)
        {
            Component c = super.getTableCellRendererComponent(table, value, isSelected,
                    hasFocus, row, column);

            String versionVal = table.getValueAt(row, IMPORTANT_COLUMN).toString();

            if(versionVal.contains("FAKE")) {
                //set to red bold font
                c.setForeground(Color.RED);
                c.setFont(new Font("Dialog", Font.BOLD, 12));
            } else {
                //stay at default
                c.setForeground(Color.BLACK);
                c.setFont(new Font("Dialog", Font.PLAIN, 12));
            }
            return c;
        }

    }
}

我的目标是突出显示版本栏中包含FAKE红色粗体字的任何值

卡米克尔

我已经扩展了DefaultTableCellRenderer,但是我不相信它正在被应用

一些简单的调试技巧:

  1. 将简单的System.out.println(...)添加到您认为应调用的方法中
  2. 覆盖方法时,请确保使用@Override注释(在TableModel类中使用了注释,但在渲染器类中没有使用注释)。

您的问题是键入错误,因为您没有覆盖正确的方法:

    @Override
    // public Component getTableCellRenderer(...) // this is wrong
    public Component getTableCellRendererComponent(...)

覆盖注释将显示一条编译消息。在更改代码之前尝试一下。

同样,您的第一列也不是Integer类。仅因为它包含整数的字符串表示形式,并不会使它成为整数。您需要向模型添加一个Integer对象。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

更改DataGridView中特定单元格的颜色

来自分类Dev

UITableView更改特定单元格的背景颜色

来自分类Dev

如何更改Janus GridEX特定单元格的颜色?

来自分类Dev

更改特定单元格的背景颜色

来自分类Dev

如何设置JTable中特定单元格的值?

来自分类Dev

使用ComboBox更新JTable中的特定单元格

来自分类Dev

如何在pyqt中更改Qtablewidget的特定单元格背景颜色

来自分类Dev

VBA-根据特定单元格的值更改单元格的颜色

来自分类Dev

如何使用CSS编辑表格中特定单元格的颜色,字体,bg_color

来自分类Dev

更改UICollectionView中特定单元格的图像

来自分类Dev

使用公式更改单元格中的字体颜色

来自分类Dev

JTable单元格文本颜色更改

来自分类Dev

JTable单元格文本颜色更改

来自分类Dev

比较单元格中的2个值并更改JTable中的单元格颜色

来自分类Dev

如何在sencha touch中使用Ext.ux.touchcalendar中的CSS更改特定单元格的颜色

来自分类Dev

如何在sencha touch中使用Ext.ux.touchcalendar中的CSS更改特定单元格的颜色

来自分类Dev

有条件地更改特定单元格的背景颜色

来自分类Dev

如何检查JTable中的特定单元格是否正在编辑?

来自分类Dev

更改iOS中特定索引单元格的背景颜色

来自分类Dev

在Prawn中为特定单元格指定样式(尤其是字体)

来自分类Dev

如何更改UITableView中选定单元格的颜色?

来自分类Dev

如何更改UITableView中选定单元格的颜色?

来自分类Dev

无法在tkinter中更改帧的指定单元格的颜色?

来自分类Dev

jTable如何更改特定行上的单元格颜色。爪哇

来自分类Dev

设置降价表中特定单元格的背景颜色

来自分类Dev

如何使用javascript设置html中特定单元格的背景颜色?

来自分类Dev

Wpf-将颜色应用于数据网格中的特定单元格

来自分类Dev

已定义单元格更改的 Java jTable 颜色行

来自分类Dev

VBA检查特定单元格区域中的更改

Related 相关文章

  1. 1

    更改DataGridView中特定单元格的颜色

  2. 2

    UITableView更改特定单元格的背景颜色

  3. 3

    如何更改Janus GridEX特定单元格的颜色?

  4. 4

    更改特定单元格的背景颜色

  5. 5

    如何设置JTable中特定单元格的值?

  6. 6

    使用ComboBox更新JTable中的特定单元格

  7. 7

    如何在pyqt中更改Qtablewidget的特定单元格背景颜色

  8. 8

    VBA-根据特定单元格的值更改单元格的颜色

  9. 9

    如何使用CSS编辑表格中特定单元格的颜色,字体,bg_color

  10. 10

    更改UICollectionView中特定单元格的图像

  11. 11

    使用公式更改单元格中的字体颜色

  12. 12

    JTable单元格文本颜色更改

  13. 13

    JTable单元格文本颜色更改

  14. 14

    比较单元格中的2个值并更改JTable中的单元格颜色

  15. 15

    如何在sencha touch中使用Ext.ux.touchcalendar中的CSS更改特定单元格的颜色

  16. 16

    如何在sencha touch中使用Ext.ux.touchcalendar中的CSS更改特定单元格的颜色

  17. 17

    有条件地更改特定单元格的背景颜色

  18. 18

    如何检查JTable中的特定单元格是否正在编辑?

  19. 19

    更改iOS中特定索引单元格的背景颜色

  20. 20

    在Prawn中为特定单元格指定样式(尤其是字体)

  21. 21

    如何更改UITableView中选定单元格的颜色?

  22. 22

    如何更改UITableView中选定单元格的颜色?

  23. 23

    无法在tkinter中更改帧的指定单元格的颜色?

  24. 24

    jTable如何更改特定行上的单元格颜色。爪哇

  25. 25

    设置降价表中特定单元格的背景颜色

  26. 26

    如何使用javascript设置html中特定单元格的背景颜色?

  27. 27

    Wpf-将颜色应用于数据网格中的特定单元格

  28. 28

    已定义单元格更改的 Java jTable 颜色行

  29. 29

    VBA检查特定单元格区域中的更改

热门标签

归档