JTable erro

Não consigo entender o que está acontecendo

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
	at javax.swing.JTable.getRowCount(Unknown Source)
	at javax.swing.plaf.basic.BasicTableUI.createTableSize(Unknown Source)
	at javax.swing.plaf.basic.BasicTableUI.getPreferredSize(Unknown Source)
	at javax.swing.JComponent.getPreferredSize(Unknown Source)
	at javax.swing.ScrollPaneLayout.layoutContainer(Unknown Source)
	at java.awt.Container.layout(Unknown Source)
	at java.awt.Container.doLayout(Unknown Source)
	at java.awt.Container.validateTree(Unknown Source)
	at java.awt.Container.validateTree(Unknown Source)
	at java.awt.Container.validateTree(Unknown Source)
	at java.awt.Container.validateTree(Unknown Source)
	at java.awt.Container.validateTree(Unknown Source)
	at java.awt.Container.validateTree(Unknown Source)
	at java.awt.Container.validateTree(Unknown Source)
	at java.awt.Container.validateTree(Unknown Source)
	at java.awt.Container.validateTree(Unknown Source)
	at java.awt.Container.validateTree(Unknown Source)
	at java.awt.Container.validate(Unknown Source)
	at javax.swing.RepaintManager$2.run(Unknown Source)
	at javax.swing.RepaintManager$2.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
	at javax.swing.RepaintManager.validateInvalidComponents(Unknown Source)
	at javax.swing.RepaintManager$ProcessingRunnable.run(Unknown Source)
	at java.awt.event.InvocationEvent.dispatch(Unknown Source)
	at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
	at java.awt.EventQueue.access$200(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)

verifica seu tablemodel, tem variavel nula q esta sendo usada dentro dele.

eu acho! rss

Não estou vendo no Model

public class MNOS_COS_Grid extends AbstractTableModel {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private List<Modelo> linhas;


	public MNOS_COS_Grid() {
		linhas = new ArrayList<Modelo>();
	}

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

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

	@Override
	public Object getValueAt(int arg0, int arg1) {
		try{
			SinOSItem OSI = ((SinOSItem)linhas.get(arg0));
			switch (arg1) {
			
			case 0:
				return OSI.getOSI_SEQ();
			case 1:
				return OSI.getALM_COD();
			case 2:
				return OSI.getTIP_COD();
			case 3:
				return OSI.getITE_COD();
			case 4:
				return OSI.getITE_DESC();
			case 5:
				return OSI.getOSI_PRECO_UNIT_CR$();
			case 6:
				return OSI.getOSI_QUANT();
			case 7:
				return OSI.getTOTAL();
			default:
				return "";
			}
		}catch(Exception e){
			return "";
		}
	}

	@Override
	public String getColumnName(int arg0) {
		switch (arg0) {
		case 0:
			return "Seq.";
		case 1:
			return "Almox";
		case 2:
			return "Tipo";
		case 3:
			return "Serviço";
		case 4:
			return "Descrição Servi\u00E7o";
		case 5:
			return "Vl. Unit\u00E1rio";
		case 6:
			return "Quantidade";
		case 7:
			return "Vl. Produtos";
		default:
			return "";
		}
	}

	@Override
	public boolean isCellEditable(int arg0, int arg1) {
		if(arg1==7){
			return false;
		}
		return true;
	}

	@Override
	public void setValueAt(Object arg0, int arg1, int arg2) {
		SinOSItem OSI = ((SinOSItem)linhas.get(arg1));
		try{
			
			switch (arg2) {
			case 0:
				OSI.setOSI_SEQ((Integer) arg0);
				break;
			case 1:
				OSI.setALM_COD((Integer) arg0);
				break;
			case 2:
				OSI.setTIP_COD((Integer) arg0);
				break;
			case 3:
				OSI.setITE_COD((String) arg0);
				break;
			case 4:
				OSI.setITE_DESC((String) arg0);
				break;
			case 5:
				OSI.setOSI_PRECO_UNIT_CR$(new BigDecimal((Double)arg0));
				break;
			case 6:
				OSI.setOSI_QUANT(new BigDecimal((Double)arg0));
				break;
			default:

			}
		}catch(Exception e){
			JOptionPane.showMessageDialog(null, OSI.getMensagemErroFormatada());
		}
	}

	public void setLista(List<Modelo> lista) {
		linhas=lista;

	}

}

E instancio dessa forma

Jtable t = new JTable();
MNOS_COS_Grid model = new MNOS_COS_Grid();
model.setLista(Collections.<Modelo> emptyList());
t.setModel(model);

PS. A lista vazia é apenas para inicia-la vazia.
Tem um botão que vai trocar a Lista depois.