首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TableModel故障

TableModel故障
EN

Stack Overflow用户
提问于 2013-10-30 18:39:56
回答 2查看 778关注 0票数 0

我很困惑,我已经把我的表模做了20次了。我开始想,也许我的问题不在于我的表模型或数据源,而在于我的MainView。我以前从没用过平板电脑.也许它不喜欢标签?我的mainView代码是最后提到的。

代码语言:javascript
复制
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at javax.swing.JTable.prepareRenderer(Unknown Source)
at javax.swing.plaf.basic.BasicTableUI.paintCell(Unknown Source)
at javax.swing.plaf.basic.BasicTableUI.paintCells(Unknown Source)
at javax.swing.plaf.basic.BasicTableUI.paint(Unknown Source)
at javax.swing.plaf.ComponentUI.update(Unknown Source)
at javax.swing.JComponent.paintComponent(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JComponent.paintChildren(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JViewport.paint(Unknown Source)
at javax.swing.JComponent.paintChildren(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JComponent.paintChildren(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JComponent.paintChildren(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JComponent.paintToOffscreen(Unknown Source)
at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(Unknown Source)
at javax.swing.RepaintManager$PaintManager.paint(Unknown Source)
at javax.swing.RepaintManager.paint(Unknown Source)
at javax.swing.JComponent._paintImmediately(Unknown Source)
at javax.swing.JComponent.paintImmediately(Unknown Source)
at javax.swing.RepaintManager$3.run(Unknown Source)
at javax.swing.RepaintManager$3.run(Unknown Source)

MyTableModel

代码语言:javascript
复制
public class MyTable implements TableModel{

ArrayList<Inventory> inventoryList;
MyDataSource source = new MyDataSource();

String[] columnNames = {"ID","Product","Price","Instock","Sold"};

public MyTable(){

    inventoryList = source.getInventory();
}

@Override
public void addTableModelListener(TableModelListener l) {

}

@Override
public Class<?> getColumnClass(int columnIndex) {

    return null;
}

@Override
public int getColumnCount() {
    return 5;
}

@Override
public String getColumnName(int columnIndex) {
    return columnNames[columnIndex];
}

@Override
public int getRowCount() {
    return inventoryList.size();
}

@Override
public Object getValueAt(int row, int col) {

    Inventory inventory = inventoryList.get(row);
    switch(col){
    case 0: return inventory.getID();
    case 1: return inventory.getProductName();
    case 2: return inventory.getPrice();
    case 3: return inventory.getInstock();
    case 4: return inventory.getSold();
    }

    return null;
}

@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {

    return false;
}

@Override
public void removeTableModelListener(TableModelListener l) {

}

@Override
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {

}

}

我的主修班

代码语言:javascript
复制
        JScrollPane scrollPane = new JScrollPane();
    tabbedPane.addTab("Database", null, scrollPane, null);

    table = new JTable(tableModel);
    scrollPane.setViewportView(table);      
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-30 18:49:52

你的错误就在这里

代码语言:javascript
复制
@Override
public Class<?> getColumnClass(int columnIndex) {
    return null;
}

因此,必须指定列类。但是如果返回null而不是它,尝试用String.class替换它,它就可以工作了。

票数 4
EN

Stack Overflow用户

发布于 2013-10-30 18:42:53

您将希望扩展AbstractTableModel,而不仅仅是实现TableModel,否则您的模型将没有所有必要的连接来正常工作,包括所有的fireXXX方法。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19691218

复制
相关文章

相似问题

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