Sobre o ArrayIndexOutOfBoundsException, é impossível dizer o que é o problema sem olhar o código. Como o próprio nome da exceção diz, sua lógica está tentando acessar um array em um índice que não existe.
Sobre a atualização da tabela, não dependa dos eventos do swing para fazê-la. Implemente ganchos entre as janelas e controle tudo manualmente, como por exemplo:
public interface GanchoDeTelaDeCadastroDeProduto {
void produtoFoiInserido();
}
Sua interface principal (a que tem a tabela) vai implementar essa interface. Quando o método produtoFoiInserido() for chamado, você dá um refresh na tabela.
Já o objeto da tela de cadastro de usuário, vai ter uma propriedade do tipo GanchoDeTelaDeCadastroDeProduto. Tipo assim:
public class TelaCadastroProduto extends JFrame (sei lá, qualquer coisa) {
...
GanchoDeTelaDeCadastroDeProduto gancho;
...
public void usuarioClicouNoBotaoDeAdicionarProduto() {
// lógica para salvar produto
gancho.produtoFoiInserido();
}
}
Tudo que falta é você amarrar a tela principal à tela cadastro produto. É só vc setar a propriedade na hora que você criar a tela de cadastro, na tela principal, assim:
public void clicouNoBotaoDeAbrirTelaDeCadastro() {
TelaCadastroProduto tcp = new TelaCadastroProduto();
tcp.setGancho(this);
// lógica pra exibir o JFrame na tela
}
Eu conheço bem pouco de Swing em si, mas é uma forma de se implementar interfaces de usuário no geral. Os eventos da UI servem pra outras coisas. Espero que ajude!
Se quiser saber mais sobre isso, procure sobre o padrão de projeto Delegate, é bastante usado no iOS para fazer ganchos entre componentes, tanto visuais quanto internos.
Dicas:
-
Outra maneira de setar o gancho é no construtor (o que eu acho melhor), mas depende do caso. Se o gancho não for obrigatório, pode deixar no setter mesmo, mas aí na hora de chamar gancho.produtoFoiInserido(); você antes verifica se o gancho não é null.
-
Para melhorar a performance da aplicação, você pode (e deve) utilizar multi-threading para buscar as informações no banco de dados. É um assunto mais complexo, mas vale a pena aprender.