回 帖 发 新 帖 刷新版面

主题:[讨论]救助一个关于在JTable中创建颜色渲染器出错的问题

颜色渲染器如下
class ColorRenderer extends JLabel
                           implements TableCellRenderer {
    Border unselectedBorder = null;
    Border selectedBorder = null;
    boolean isBordered = true;

    public ColorRenderer(boolean isBordered) {
        this.isBordered = isBordered;
        setOpaque(true); //MUST do this for background to show up.
    }

    public Component getTableCellRendererComponent(
                            JTable table, Object color,
                            boolean isSelected, boolean hasFocus,
                            int row, int column) {
        [color=FF0000]Color newColor = (Color)color;[/color]
        setBackground(newColor);
        if (isBordered) {
            if (isSelected) {
                if (selectedBorder == null) {
                    selectedBorder = BorderFactory.createMatteBorder(2,5,2,5,
                                              table.getSelectionBackground());
                }
                setBorder(selectedBorder);
            } else {
                if (unselectedBorder == null) {
                    unselectedBorder = BorderFactory.createMatteBorder(2,5,2,5,
                                              table.getBackground());
                }
                setBorder(unselectedBorder);
            }
        }

        setToolTipText("RGB value: " + newColor.getRed() + ", "
                                     + newColor.getGreen() + ", "
                                     + newColor.getBlue());
        return this;
    }
}
给列增加这个渲染器tableColumn.setCellRenderer(new ColorRenderer(true));
编译时出现异常Exception during paint(): java.lang.ClassCastException:java.lang.String
好像是颜色渲染器中的红色部分有问题
请大大赐教!谢谢

回复列表 (共1个回复)

沙发

将Color转换成String是会出现java.lang.ClassCastException的
问题出现在最后的setToolTipText上

我来回复

您尚未登录,请登录后再回复。点此登录或注册