Olá pessoal,
sou novato na programação e mais ainda no Java Swing.
Estou desenvolvendo minha primeira aplicação, com a ajuda dos colegas do fórum e da faculdade, e bateu uma dúvida. Depois de fazer a segunda tela de cadastro, percebi que os componentes(JTable, Containers, menu e botões) são iguais, os métodos de posicionamento também, só as tabelas e os métodos do CRUD é que variam.
Tem como criar um JFrame genérico, com esses componentes e métodos comuns e depois criar JFrames específicos que extendão desse genérico?
Dei uma pesquisada e achei uns materiais que não entendi nada. Tem um que fala em usar interface, mas não entendi…
tentei fazer direto como falei e os componentes não aparecem no netbeans…
essa é a idéia da orientação a objetos…
na verdade não precisa nem criar várias ui (JFrame no caso)
Apenas 1…
quais sao os atributos do seu JFrame?
Faça um getter e setter deles…
e a cada vez que for instanciar o JFrame de um set nos atributos passando os parametros q vc quer…
entendeu?
Claro que é possível, não somente isso mas também códigos mais concentrados, robustos, flexíveis…
É possível criar classes para o CRUD do seu sistema também genéricas, que facilita ainda mais sua vida.
datatable -> crie teu proprio tableModel !
botoes / toolbars -> tente usar MVC(eu sei que é estranho pra Desktop), mas implemente os actionListeners em uma classe separada
menu -> vc sempre tem apenas um na tela principal, entao nao deve ser problema
Pessoal, desculpa a demora na resposta, estava pegado no trabalho e na faculdade…
Obrigado a todos pelas respostas…
alanrodrigues, nesse caso estou usando JInternalFrame, que tem os seguintes atributos:
// Variables declaration - do not modify
private javax.swing.JButton btnDesativar;
private javax.swing.JButton btnEditar;
private javax.swing.JButton btnExcluir;
private javax.swing.JButton btnFechar;
private javax.swing.JButton btnNovo;
private javax.swing.JButton btnPesquisar;
private javax.swing.JLabel labCampoPesquisa;
private javax.swing.JPanel panMenu;
private javax.swing.JPanel panPesquisa;
private javax.swing.JPanel panTabela;
private javax.swing.JScrollPane scrPanTabela;
private javax.swing.JFormattedTextField txfCampoPesquisa;
// End of variables declaration
// ATRIBUTOS
protected ControleGenerico controle;
protected boolean newObject;
protected int indexRow;
protected boolean[] edicaoColunas = { false, false };
// ---> FIM ATRIBUTOS
// METODOS
public void setPosicao() {
Dimension dimension = this.getDesktopPane().getSize();
this.setLocation((dimension.width - this.getSize().width) / 5,
(dimension.height - this.getSize().height) / 5);
}
public abstract void novo();
public abstract void editar();
public abstract void desativar();
public abstract void excluir();
public abstract JTable getTabela();
public abstract TableModel getTableModel();
public abstract List popularTabela();
public abstract void abrirGuiCadastroEntidade(ControleGenerico controle);
public abstract void getTxfPesquisa();
public abstract void pesquisarentidade(String str);
// ---> FIM METODOS
// METODOS ACESSO
public boolean isNewObject() {
return newObject;
}
public void setNewObject(boolean newObject) {
this.newObject = newObject;
}
public boolean[] getEdicaoColunas() {
return edicaoColunas;
}
// ---> FIM METODOS ACESSO
E estou usando um TableModel genérica, que extends AbstractTableModel, e as específicas que extends TableModel.
E nas GUIs não uso classes de negócio, apenas o controle. (Tentando usar um pouco de MVC)
Tentei usar a lógica das tabelas para as GUIs, mas não consegui, a ideia original seria criar uma JInternalFrame genérica, de CRUD, com esses componentes, atributos e métodos.
E quando eu quisesse implementar uma, eu dava um extends e beleza, só que parece que não funciona assim…
alanrodrigues, não entendi muito bem a sua orientação, poderia mostrar um trecho de código? Usando o que postei agora…