estou tentando fazer herança de formulário, criei um classe que herda do JFrame(com o nome BaseForm), coloquei diversos botoes e um jpanel vazio. Então criei uma classe que herda do simplebeaninfo (com o nome BaseFormBeanInfo) e alterei o metodo getbeanDescriptor para : @Override
public BeanDescriptor getBeanDescriptor() {
BeanDescriptor bd = new BeanDescriptor(BaseForm.class);
bd.setValue(“containerDelegate”, “getPanelPai”);
return bd;
}
então criei uma outra classe do tipo “formulario bean”(com o nome Filho) que herda do BaseForm…
então o filho aparece vazio, até aqui tudo bem, mas qdo adiciono novos componentes no Filho… e mando rodar…
me parece que não adiciona no Jpanel vazio da classe BaseForm e sim no proprio baseForm, então os componentes do BaseForm ficam por cima dos componentes da classe filho…
fiz esse procedimento com base em tutorias achados no google…
alguem tem alguma ideia do que poderia ser???
obrigado pessoal…
Bem so uma idéia que eu custumo usar e meus aplicativos. Eu uso e a composição de objetos ao invés de herança, e muito mais prático fazer isso em java.
Por exemplo:
Eu todos os meus cadastro tenho os seguintes botões, Inserir, Excluir, Salvar e Localizar. Crio um JPanel com esses botões e adicione este JPanel a paleta do NetBeans, e depois e so arrastar e soltar nos formulários de cadastros.
Tenta usar um dos principios da Orientação objetos: Prefira composição ao invés de gerança
Tudo bem… posso até usar dessa forma… mas e por exemplo… terei um metodo de comportamento dos botões… ex. : qdo clico no botão inserir habilita o botão salvar desabilita o botão pesquisar e etc… se eu usar a composição terei que duplicar esse metodo em todas as classes…
o que vc acha??
obrigado
att,
Jonathan Martinez
Não você não tera que duplicar o código. Por exemplo na minha aplicação como te falei um uso um JPanel com os botões Inserir, Excluir, Salvar, Cancelar e Localizar a logica dos estados dos botões ficam todas no JPanel. Agora vc me pergunta como eu consegui isso. usei alguns padrões de projeto principalmente o Strategy que me permite variar o comportamento dos meus objetos.
Um exemplo simples: Não vou colocar todo o codigo, é apenas um esboço para vc fazer na sua aplicação
Acredito que seguindo este esboço vc conseguira fazer o que vc quer. E vc tera que fazer isso apenas uma unica vez
//Inteface
interface Navegador {
void insert();
void delete();
void save();
void cancel():
boolean isInsert();
boolean isSave();
boolean isDelete();
}
//Classe JPanel
public class JPanelNavegador implements Navegador{
private Navegador navegador;
private void initComponents(){
//Aqui ficam as configurações dos componentes instancias entre outros
}
//Os métodos insert, delete, save e cancel, você chama eles em cada respectivo botão
//No botão Novo vc chama o insert, No botão Excluir vc chama delete etc....
public void insert(){
navegador.insert();
}
public void delete(){
navegador.delete();
}
public void save(){
navegador.save();
}
public void cancel(){
navegador.cancel();
}
//Este metodos são os estados dos botões
public boolean isInsert(){
return navegador.isInsert():
}
public boolean isSave(){
return navegador.isSave();
}
public boolean isDelete(){
return navegador.isDelete();
}
public void setNavegador(Navegador navegador){
this.navegador = navegador
}
}
//Agora vc deve um classe Concreta onde vai ficar toda logica de Persistencia generic
//A instacia dessa classe vc deve passar para o metodo setNavegador da classse JPanelNavegador
public class NavegadorPersistencia implements Navegador{
//metodos na interface Navegador implementando a regra de persistencia
}