Você irá perceber que o alterar só irá funcionar, se antes você clicar na coluna id do produto. Modifique o método alterar() da classe ProdutoCategoriaFrame como sugerido abaixo
Antes
Object objetoDaLinha = (Object) modelo.getValueAt(tabela.getSelectedRow(), tabela.getSelectedColumn());
Depois
Object objetoDaLinha = (Object) modelo.getValueAt(tabela.getSelectedRow(), 0);
Note que o código anterior obtém o id da coluna selecionada. O correto é deixar fixo em 0, pois o id está na primeira coluna.