首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AbstractTableModel中的NullPointer

AbstractTableModel中的NullPointer
EN

Stack Overflow用户
提问于 2013-11-02 01:10:18
回答 1查看 156关注 0票数 0

我正在尝试用空值VCID和VCIDBACKUP替换“for”。下面是我的代码:

代码语言:javascript
复制
if (controladorExcel == false) { 
            WritableWorkbook workbookVazio = Workbook.createWorkbook(file);


            WritableSheet sheet1 = workbookVazio.createSheet("First Sheet", 0);
            TableModel model = table.getModel();

            for (int i = 0; i < model.getColumnCount(); i++) {
                Label column = new Label(i, 0, model.getColumnName(i));
                sheet1.addCell(column);
                System.out.println(column.getContents());
            }
            int j = 0;
            for (int i = 0; i < model.getRowCount(); i++) {
                for (j = 0; j < model.getColumnCount(); j++) {
                    System.out.println(model.getRowCount());
                    System.out.println(model.getColumnCount());
                    if(model.getValueAt(i, j) == null){ //At this point I verify if the value is null
                        model.setValueAt("Nao possui", i, j);
                    }

                    Label row = new Label(j, i + 1, //I got NULL POINTER here
                            model.getValueAt(i, j).toString());
                    System.out.println(row.getContents());
                    sheet1.addCell(row);

                }
            }
            workbookVazio.write();
            workbookVazio.close();

下面是我的AbstractTableModel的代码:

代码语言:javascript
复制
public class MacroTableModel extends AbstractTableModel {

private String[] colunas;
private List<Macro> linhas;

public MacroTableModel(List<Macro> lista){
    this.colunas = new String[]{"VPN Name", "VCID", "VCID BACKUP"};
    this.linhas = new ArrayList<Macro>(lista);
}

public String getColumnName(int index) {
    return colunas[index];
}


public int getRowCount(){
    return linhas.size();
}

public int getColumnCount(){
    return colunas.length;
}


@Override
public void setValueAt(Object aValue, int rowIndex, int columnIndex){
    Macro macro = new Macro();
        switch(columnIndex){
            case 0:
                macro.setVpnName(aValue.toString());
                break;
            case 1:
                macro.setVcid(aValue.toString());
                break;
            case 2:
                macro.setVcid_BackUp(aValue.toString());
                break;
        }
   fireTableCellUpdated(rowIndex,columnIndex);
}

@Override
public Object getValueAt(int rowIndex, int columnIndex) {
    Macro macro = linhas.get(rowIndex);
    switch(columnIndex){
        case 0:
           return macro.getVpnName();
        case 1:
            return macro.getVcid();
        case 2:
            return macro.getVcid_BackUp();
    }
    return null; 
}



public void setColunas(String[] colunas) {
    this.colunas = colunas;
}

public String getColunas(int i) {
    return colunas[i];
}

}

当我调试setValueAt方法时,我得到了正确的值,但仍然得到相同的错误。我可能忘记了我的AbstractModel类中的一些实现,我不太清楚。有人能帮帮忙吗?

EN

回答 1

Stack Overflow用户

发布于 2013-11-02 01:21:38

下面两行

代码语言:javascript
复制
public void setValueAt(Object aValue, int rowIndex, int columnIndex){
    Macro macro = new Macro();

应替换为

代码语言:javascript
复制
public void setValueAt(Object aValue, int rowIndex, int columnIndex){
    Macro macro = linhas.get(rowIndex);

否则,您修改的新宏甚至不是模型的一部分,并且在setValueAt()方法返回之后,这个新宏就有资格进行GC了。您想要更改模型中此行索引处的宏的值。

也就是说,我发现在将模型导出到Excel时修改它有点奇怪。为什么模型不自己进行替换:

代码语言:javascript
复制
public Object getValueAt(int rowIndex, int columnIndex) {
    Macro macro = linhas.get(rowIndex);
    switch(columnIndex){
        case 0:
           return valueOrDontHave(macro.getVpnName());
           break;
        case 1:
            return valueOrDontHave(macro.getVcid());
        case 2:
            return valueOrDontHave(macro.getVcid_BackUp());
    }
    return null; 
}

private valueOrDontHave(Object value) {
    return value == null ? ""Nao possui" : value;
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19731695

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档