Estou desenvolvendo uma aplicação usando NetBeans + Swing e a pouco me deparei com o seguinte problema. Há como utilizar do artifício de herança de forms assim como no Delphi? Tentei criar um formulário básico e outro extendido dele porém não funcionou
Outra coisa, estou iniciando um projeto de médio porte com java e acabei optando por criar um framework para a persistência dos objetos e mapeamento com o banco de dados, sei que isto é meio que reinventar a roda, mas já dei uma olhada em frameworks como prevayler e hibernate e realmente achei um tanto complexo sua implementação e a priori na empresa é produtividade… Alguém pode me dar dicas de documentos que abordam + profundamente estes assuntos? Assim como exemplos práticos em java…
[quote=“rvaldomiro”]Bom dia srs,
sei que isto é meio que reinventar a roda, mas já dei uma olhada em frameworks como prevayler e hibernate
Obrigado :)[/quote]
:arrow: prevayler é mais simples que parece rvaldomiro :D. Pelo menos dependendo do que vc quer a implementação é simples e bem legivel o codigo.
Qto ao prevayler parece ser muito legal porém existe um problema: ele persiste objetos em disco se não me engano… tenho que mapear um banco de dados inteiro e talvez não atenderia esta necessidade , caso contrário vc tem alguns exemplos práticos de como fazer isso???
Vai um pedaço do código:
public class CadBase extends javax.swing.JFrame {
private String xyz;
}
public class CadFormasPagto extends CadBase {
/** Creates new form CadFormasPagto */
public CadFormasPagto() {
setTitle("Formas de Pagamento");
}
}
porém não consigo ver de forma visual os componentes herdados da classe base no NetBeans…
Esse negocio de reinventar a roda eh cruel
Por mais simples que vc possa fazer, no final acaba ficando complexo pra outro. A diferença é que vc aprendeu a mexer Por isso recomendo que peque algum pronto e estude, o no maximo crie um seu bem simples pra ver que nao eh tao simples assim…
Dica: pega o hibernate e dá um uma lida, roda uns exemplos. Ele nao é tao complicado nao.
O problema maior vai ser ter telas que trabalham com esses registros. Esse vai ser o pior. Dica pra tela: cria uma principal com os eventos mais usados. Depois, as outras devem estender ela.
em primeiro lugar obrigado pelo post. Seguinte, até agora tudo o que ví e lí sobre camadas de persistência foi muito abstrato, gostaria de ver exemplos que realmente posso utilizar como base para aprender… Inicialmente eu tenho um framework de persistência que constuí para Delphi e minha idéia era portá-lo para java, porém como estou percebendo não será tão fácil assim… Não querendo abusar e já abusando de sua boa vontate não terias alguns exemplos didáticos para eu me aprofundar? tipo como mapear os objetos para tabelas de SGDB e posteriormente trabalhar com a camada de apresentação?
Qto ao prevayler parece ser muito legal porém existe um problema: ele persiste objetos em disco se não me engano… tenho que mapear um banco de dados inteiro e talvez não atenderia esta necessidade , caso contrário vc tem alguns exemplos práticos de como fazer isso???
…[/quote]
Com prevayler todos os objetos ficam em memoria. De uma olhada nos tutoriais do guj que tem aqui no guj e nos topicos sobre o assunto
public class CadBase extends javax.swing.JFrame {
private String xyz;
}
public class CadFormasPagto extends CadBase {
/** Creates new form CadFormasPagto */
public CadFormasPagto() {
setTitle("Formas de Pagamento");
}
}
porém não consigo ver de forma visual os componentes herdados da classe base no NetBeans…[/quote]
agora vc me pegou… pensei que vc tava perguntando se funciona a herança… ae sim… agora… “forma visual” que vc está falando é utilizar um editor grafico de GUI né??
ae não sei porque programo em swing, mas tudo na mão… e utilizando eclipse. Mas o codigo ae funcionaria na boa.
É isso ae Hempx, estou com um zilhão de dúvidas sobre GUI, pq estava muito acostumado com os esquemas de herança visual de telas tb. Meu objetivo é criar uma tela de cadastro básica com o layout padrão, botões, cores, etc… e herdar os formulários dele tipo: Cadastro de Clientes, Produtos, etc sacow… Estou utilizando o NetBeans por já ter a IDE pronta para aplicações GUI, mas vejo que muitos de vocês constroem telas artezanalmente na mão; isso não é complicado? ficar tentando imaginar onde está o componente em relação aos demais sem nenhum auxílio visual :shock:
Estou aberto a sugestões de padrões e frameworks, porém gostaria de estudar algo que realmente produtivo e conto com a ajuda de todos vocês.
de começo vc demora pra fazers as GUIs… mas com o tempo e pratica e utilizando bastante o auto-completar do eclipse( ctrl + space ) até que talvez eu demore poucos minutos a mais do que está usando uma ferramenta que auxilie para isso.
vc usa gerenciadores de layout:
java.awt.BorderLayout; java.awt.GridBagLayout;
entre varios outros que vc pode ver na API do java e outras.
Geralmente divido minhas GUI complexas em paneis diferentes ex:
[code]
class PanelCidade extends JPanel {
// apenas um exemplo simplificado
protected JLabel labelCidade;
protected JTextField txtCidade;
private String cidade;
public class Janela extends JInternalFrame {
private PanelCidade panelCidade;
private PanelBotoes panelBotoes;
...
...
...
public Janela(){
super();
initComponents();
...
...
show();
}
private void initComponents(){
setSize(575, 290);
setDefaultCloseOperation(JInternalFrame.DISPOSE_ON_CLOSE);
...
...
Jpanel panel = new JPanel( new BorderLayout() );
panelCidade = new PanelCidade( cidade );
panel.add( panelCidade, BorderLayout.Center );
setContentPane(panel);
}
}
:arrow: Mas acho que o netbeans é uma otima ferramente tbm… vc pode usar ele utilizando AbsoluteLayout e nao sei se é AbstractLayout para colocar os components na posição desejadas tbm… ou utilizar metados como setBounds( 0 ,2 ,3, 4) para posicionar o componente em uma posição desejada… mas ae vc vai ter que ficar imaginando as coisas na cabeça…
fazendo artezanalmente vc faz o codigo do jeito que vc quer… eu prefiro assim… mas esse é a opnião de uma pessoa que nunca usou o netbeans pra fazer isso… talvez entre alguem ae q usa netbeans falando suas vantagens e como usar…
Estou desenvolvendo uma aplicação usando NetBeans + Swing e a pouco me deparei com o seguinte problema. Há como utilizar do artifício de herança de forms assim como no Delphi? Tentei criar um formulário básico e outro extendido dele porém não funcionou
Outra coisa, estou iniciando um projeto de médio porte com java e acabei optando por criar um framework para a persistência dos objetos e mapeamento com o banco de dados, sei que isto é meio que reinventar a roda, mas já dei uma olhada em frameworks como prevayler e hibernate e realmente achei um tanto complexo sua implementação e a priori na empresa é produtividade… Alguém pode me dar dicas de documentos que abordam + profundamente estes assuntos? Assim como exemplos práticos em java…
Obrigado :)[/quote]
Herança de “janelas” é um problema até no Delphi. Lembre-se que o NetBeans gera arquivos de Form e isso é uma péssima prática, pois atrela o seu código a um formato de “janela” não padronizado. O que você está tentando fazer funciona mais ou menos no Eclipse, mas como nem tudo é perfeito os componentes da janela mãe não são alteráveis na filha, mas pelo menos ele instancia e mostra no editor de janela. Isso porque o eclipse gera a janela a partir do código e não de um arquivo de form. Pode ser que as próximas versões do NetBeans fiquem espertas quanto a isso e usem o form da classe mãe para construir a filha, mas mesmo assim é mais um arquivo sem necessidade.
Mas acho que você deveria tentar o seguinte (não garanto nada):
-Crie uma classe pelo wizard (JFrame);
-O NetBeans vai gerar o arquivo de form;
Troque na mão a herança dessa classe passando para a outra janela que você tem;
Se funcionar me conta…
Tanho uma solução para você não e 100% mas funciona para mim aqui, faz assim:
Selecione a janela padrão na qual você quer fazer a herança visual
clique com direito escolha [b]copy[/b]
Selecione o pacote de destino e clique em [b]paste copy[/b]
Será feita uma janela igualzinha a janela mãe com todas caracteristicas, então abra a janela de codigo e troca a diretiva [b]extends javax.swing.JFrame[/b] pela sua classe padrao,tipo [b]extends MinhaClassePadrao[/b] bom funciona mas o unico problema que uma mudança visual na classe mãe depois de copiada naum reflete diretamente no ambiente IDE do netbeans mas se voce tiver certeza que sua classe mãe naum tera mudanças brucas na parte visual dá para quebrar o galho.
Parece que estamos no mesmo barco… vindo inclusive da mesma ferramenta (Delphi)… é incrível que isso não seja possível de fazer no NetBeans da mesma maneira simples que é no Delphi, até agora parecia uma ótima IDE.
No caso do NetBeans é possível reaproveitar muita coisa, mas se você designar tudo usando JPanels e outros JComponents. (Não dá para trabalhar com herança de JFrames).
No NetBeans 5.0 (só que devidamente atualizado; o NetBeans sem atualização não tem esse recurso), você pode arrastar uma classe derivada de JComponent para dentro de seu form.
Galera, consegui a solução, funcionou perfeitamente, inseri essa minha questão no site www.netbeans.org e já foi respondida, pra quem se interessar dá uma olhada em: