繁体   English   中英

尝试为JTable中的特定单元格着色…getTableCellRendererComponent覆盖

[英]Trying to color specific cell in JTable… getTableCellRendererComponent Overide

因此,我知道这可能是一个重复的问题,但是我已经浏览了许多已经存在的问题,但似乎没有一个对我有用,所以我想我会发表自己的观点,并希望其他一些遇到麻烦的人这样做也将有所帮助。

这是我的代码

    table.getColumn("Name").setCellRenderer(
                new DefaultTableCellRenderer() {
                    @Override
                    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
                        setText(value.toString());

                        if (row==3) 
                        {
                            setForeground(Color.RED);
                        }
                        return this;
                    }
                }
            );

这是JFrame中显示的内容。 如您所见,我试图仅对“名称”列的第三行中的文本进行着色,但对整个行进行着色。 在此处输入图片说明

有什么建议么? 谢谢! 迦南人

呈现对于“名称”列是唯一的。 在第3行时将红色设置为前景色,但对于其他行则不要将其重置,因此在调用painter时始终将其绘制为红色。 当行为3时,您必须设置红色,但在其他情况下,您还必须重置原始颜色。

编辑:执行的版本。 现在备份了原始的前景色,并且使用super像其他列一样进行渲染。

           table.getColumn("Name").setCellRenderer(
            new DefaultTableCellRenderer() {

        Color originalColor = null;

        @Override
        public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
            DefaultTableCellRenderer renderer = (DefaultTableCellRenderer) super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
            if (originalColor == null) {
                originalColor = getForeground();
            }
            if (value == null) {
                renderer.setText("");
            } else {
                renderer.setText(value.toString());
            }

            if (row == 3) {
                renderer.setForeground(Color.RED);
            } else {
                renderer.setForeground(originalColor); // Retore original color
            }
            return renderer;
        }
    });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM