当前位置: 首页 > 知识库问答 >
问题:

对JTable的SetDefaUltenderer方法的混淆

冯俊英
2023-03-14
class CustomDateCellRenderer extends DefaultTableCellRenderer{
    @Override
        public Component getTableCellRendererComponent(JTable tab, Object value, boolean isSelected,
                                                        boolean hasFocus, int r, int c){
        if(value instanceof LocalDate){
            System.out.println("Local Date");
            // this is where I display the age from the value variable
        }
        return super.getTableCellRendererComponent(tab,value,isSelected,hasFocus,r,c);
    }
}

table.getColumnModel().getColumn(2).SetCellRenderer(new CustomDateCellRenderer());

但如果我用:

table.setDefaUltrenderer(localdate.class,new CustomDateCellRenderer());

如果需要,我很乐意提供整个SSCE,但目前,为了让事情更简短,下面是TableModel的getValueAt()和setValueAt()方法:

@Override
public void setValueAt(Object value, int r, int c){
    Person p = data.get(r);
    switch(c){
        case 0 :    p.setFName((String)value); break;
        case 1 :    p.setSName((String)value); break;
        case 2 :    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
                    p.setDOB(LocalDate.parse((String)value, formatter)); break;
    }
}

@Override
public Object getValueAt(int r, int c){
    Person p = data.get(r);
    switch(c){
        case 0 : return p.getFName(); 
        case 1 : return p.getSName(); 
        case 2 : return p.getDOB(); 
    }
    return null;
}

数据只是Person类型的arraylist(一个具有明显变量(String)fName、(String)sName和(LocalDate)DOB的类)

任何帮助都将不胜感激!

共有1个答案

段超
2023-03-14

我发现我没有重写TableModel中的getColumnClass()方法。业余犯的错误!

这意味着table.setDefaUltrenderer(localdate.class,new CustomDateCellRenderer());不能工作,但是获取列并设置呈现器可以。

我不确定是否是最好的方法,但这就是我现在使用的getColumnClass方法:

@Override
public Class getColumnClass(int c){
    switch(c){
        case 0 : return String.class;
        case 1 : return String.class;
        case 2 : return LocalDate.class;
    }
    return null;
}
 类似资料:
  • 问题内容: 我可以通过设置为来解决此问题,但是对此我有一些疑问 当我将fetchSize设置为10或其他正整数时,它不起作用,将其设置为有效后,为什么呢? 如果我们设置负值,则它给非法值错误,但就是那么,为什么不给错误? 该表包含600万条记录,在获取100或200条记录后我关闭了该表,这需要30-35秒的时间。 减少关闭时间的解决方案。 我想在此处添加更多内容,并已使用MySQL驱动程序对其进行

  • 而RNDecryptor的addData方法如下: 我不明白这一行实际上是要做什么,它对加密流的每一个块都调用: 假设我有一个1000字节的块,而HMACLength是32。 提前道谢。

  • 我已经通过字符串的拆分方法留档,但结果并不像预期的那样。当我们将限制参数设置为负值的字符串拆分时,它总是附加一个空值。为何要这样做呢?考虑一些案例 我希望这两张照片都是3。 现在,由于没有找到匹配项,通常的split with limit方法应该打印0,但它创建了一个带有空字符串的数组。 现在我有了一个匹配项,无限制参数的split方法可以很好地工作。它是我预期的输出,但为什么它不在本例中创建一个

  • 我正在努力区分let, letrec, let*...因为方案不是我的主要编程语言,我的内存不存在很长时间...我有这个功能...现在我很困惑这里的letrec...这又是recursion.that我能理解...但是不能在这段代码中建立足够的连接...(也许仍然对递归感到困惑)有人能解释为什么这里需要letrec吗 (编辑)我所理解的是它的尾部递归 - - 此函数返回x,y的列表,其边界为sta

  • 我尝试在android studio中使用Proguard,但Proguard似乎没有混淆类名,例如,我的应用程序结构和配置: 和配置 但当我尝试在应用程序中触发异常时: ADB控制台中列出了异常: 只有方法被混淆了,MainActivity.class没有

  • 本文向大家介绍Spring Boot使用Allatori代码混淆的方法,包括了Spring Boot使用Allatori代码混淆的方法的使用技巧和注意事项,需要的朋友参考一下 Allatori混淆技术介绍 Allatori是一个Java 混淆器,它属于第二代混淆器,因此它能够全方位地保护你的知识产权。 Allatori具有以下几种保护方式:命名混淆,流混淆,调试信息混淆,字符串混淆,以及水印技术。