Tenho a classe TelaEdicao, que tem botões salvar e cancelar. Algumas vezes essa classe poderá ter uma tabela c/ botões adicionar e excluir na tabela, quando for para edição de algum objeto que é composto de outros.
Atualmente isso foi feito com 2 construtores. Em um deles, eu mando o JPanel que tem a tabela e os botões para acrescentar ou remover objetos.
Além dessa classe, eu tenho o ConstroladorModeloTelaEdicao, que define os métodos que devem ser implementados pelo controlador. Quando eu crio uma classe derivada de TelaEdicao, eu crio também o controlador deriviado de ControladorModeloTelaEdicao.
O problema dessa solução, é que quando crio classe que não tem a tabela, tem 2 métodos abstratos de ControladoModeloTelaEdicao (acaoAdicionarNaTabela e acaoExcluirDaTabela) que ficam vazios, pois eles so tem sentido se for pra tela de edição que tenha tabela.
Alguém tem alguma sugestão de uma forma para melhorar isso?
Tive pensando em herança ou usar interfaces, mas ainda estou sem idéias de como fazer.
Quando não tem tabela, a tela de edição deve fazer isso:
getContentPane().add(painelInferior,BorderLayout.SOUTH);
getContentPane().add(painelConteudo,BorderLayout.CENTER);
Já quando tem tabela, isso deve ser feito no construtor:
getContentPane().add(painelInferior,BorderLayout.SOUTH);
getContentPane().add(painelTabela,BorderLayout.CENTER);
getContentPane().add(painelConteudo,BorderLayout.NORTH);
construtores atuais:
[code] public TelaEdicao() {
super();
configurarPainelInferior();
painelConteudo = construirPainelConteudo();
getContentPane().setLayout(new BorderLayout());
getContentPane().add(painelInferior,BorderLayout.SOUTH);
getContentPane().add(painelConteudo,BorderLayout.CENTER);
this.setModal(true);
this.pack();
this.setLocationRelativeTo(null);
}
public TelaEdicao(PainelTabela painelTabela){
super();
this.painelTabela = painelTabela;
configurarPainelInferior();
painelConteudo = construirPainelConteudo();
getContentPane().setLayout(new BorderLayout());
getContentPane().add(painelInferior,BorderLayout.SOUTH);
getContentPane().add(painelTabela,BorderLayout.CENTER);
getContentPane().add(painelConteudo,BorderLayout.NORTH);
this.setModal(true);
this.pack();
this.setLocationRelativeTo(null);
}[/code]