Implementar TableModelListener em um Projeto me NetBeans

Seguinte eu tenho o seguinte exemplo que funciona muito bem, ele lê duas notas digitadas na tabela e dá a média. O diferencial dele é que ele tem um listener que checa mudanças na jTable e recalcula a média quanto redigitadas. O meu problema é que não estou conseguindo portar isso para um projeto em Netbeans, Alguem pode me ajudar ? Colocarei os dois códigos o que funciona e outro que só tem a jTable montada, Um abraço…

import javax.swing.;
import javax.swing.table.TableModel;
import javax.swing.event.
;
import java.awt.Dimension;
import java.awt.event.*;

/* Classe Tabela herda de JPanel
e implementa TableModelListener */

class Tabela extends JPanel implements TableModelListener
{
Object[][] dados = {{“Nome 1”, “”, “”, “”},
{“Nome 2”, “”, “”, “”},
{“Nome 3”, “”, “”, “”}};
String[] nomescolunas = {“Nome”, “Nota 1”, “Nota 2”, “Média”};
JTable table = new JTable(dados, nomescolunas);
TableModel tabela;

/* Método construtor Tabela() responsavel por montar
a tabela e adicionar um TableModelListener */

Tabela()
{
table.setPreferredScrollableViewportSize(new Dimension(300, 50));
JScrollPane painel = new JScrollPane(table);
add(painel);
tabela = table.getModel();
tabela.addTableModelListener(this);
}

/* Responsável por monitorar alterações na tabela. Quando a
tabela é alterada o valor é armazenado e a variável fatorDivisão
é incrementada. Se a variável fatorDivisão for maior que 1 o
programa calcula a média. */

public void tableChanged(TableModelEvent e)
{
if (e.getType() != TableModelEvent.UPDATE) return;
int linha = e.getFirstRow();
int coluna = e.getColumn();
int i = 0, fatorDivisao = 0;
float soma = 0f;
String strCell;

  if ((coluna > 0) && (coluna < 3))
{
  for (i = 1; i < 3; i++)
    {
      try
	{
	  strCell = (String)tabela.getValueAt(linha, i);
	  if (!strCell.equals(""))
	  {
	    soma += Float.parseFloat(strCell);
	    fatorDivisao++;
	  }
	}
      catch(NumberFormatException exc) {}
    }
  if (fatorDivisao > 1)
    tabela.setValueAt(new Float(soma/fatorDivisao), linha, 3);
  else tabela.setValueAt("", linha, 3);
}

}

/* Inicio do programa */

public static void main(String[] argv)
{
JFrame meuQuadro = new JFrame();

  meuQuadro.setContentPane(new Tabela()); 
  meuQuadro.addWindowListener(new WindowAdapter()
      {
	public void windowClosing(WindowEvent evt)
	  {
	    System.exit(0);
	  }
      });
  meuQuadro.pack(); 
  meuQuadro.setVisible(true); 
}

}

*********** Projeto só com a jTable montada em Netbeans

/*

  • teste.java
  • Created on 19 de Outubro de 2006, 13:50
    */

/**
*

  • @author suporte
    */

public class teste extends javax.swing.JFrame {

/** Creates new form teste */
public teste() {
    initComponents();        
}

/** This method is called from within the constructor to
 * initialize the form.
 * WARNING: Do NOT modify this code. The content of this method is
 * always regenerated by the Form Editor.
 */
// <editor-fold defaultstate="collapsed" desc=" Generated Code ">
private void initComponents() {
    painel = new javax.swing.JScrollPane();
    table = new javax.swing.JTable();

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
    table.setModel(new javax.swing.table.DefaultTableModel(
        new Object [][] {
            {"Nome 1", "", "", ""},
            {"Nome 2", "", "", ""},
            {"Nome 3", "", "", ""}
        },
        new String [] {
            "Nome", "Nota 1", "Nota 2", "Média"
        }
    ));
    painel.setViewportView(table);

    org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane());
    getContentPane().setLayout(layout);
    layout.setHorizontalGroup(
        layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
        .add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup()
            .addContainerGap(22, Short.MAX_VALUE)
            .add(painel, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 452, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
            .addContainerGap())
    );
    layout.setVerticalGroup(
        layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
        .add(layout.createSequentialGroup()
            .add(29, 29, 29)
            .add(painel, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 71, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
            .addContainerGap(28, Short.MAX_VALUE))
    );
    pack();
}// </editor-fold>

/**
 * @param args the command line arguments
 */

 

public static void main(String args[]) {
    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
            new teste().setVisible(true);
        }
    });
}

// Variables declaration - do not modify
private javax.swing.JScrollPane painel;
private javax.swing.JTable table;
// End of variables declaration

}