我很困惑,我已经把我的表模做了20次了。我开始想,也许我的问题不在于我的表模型或数据源,而在于我的MainView。我以前从没用过平板电脑.也许它不喜欢标签?我的mainView代码是最后提到的。
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
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) {
}}
我的主修班
JScrollPane scrollPane = new JScrollPane();
tabbedPane.addTab("Database", null, scrollPane, null);
table = new JTable(tableModel);
scrollPane.setViewportView(table); 发布于 2013-10-30 18:49:52
你的错误就在这里
@Override
public Class<?> getColumnClass(int columnIndex) {
return null;
}因此,必须指定列类。但是如果返回null而不是它,尝试用String.class替换它,它就可以工作了。
发布于 2013-10-30 18:42:53
您将希望扩展AbstractTableModel,而不仅仅是实现TableModel,否则您的模型将没有所有必要的连接来正常工作,包括所有的fireXXX方法。
https://stackoverflow.com/questions/19691218
复制相似问题