Herança Visual de Formulários em Java!

3 respostas
itamar-apuk

:smiley: Olá galera do fórum GUJ!!

bem, é o seguinte: programo já faz algum tempo tempo em Delphi uns 6 anos, e comecei agora a me aventurar em Java, estou gatinhando ainda…
a minha dúvida é a seguinte: em delphi, crio um form com os panels, buttons, cores, etc… e programo os eventos necessários para o funcionamento do form,
depois o chamo de “formPadrao”. Em seguida, para os demais forms de manutenção, Cadastro de Clientes, Cadastro de Produtos, etc., eu herdo de “formPadrao” e
BINGO!! tá tudo pronto e funcionando!!
Como eu faço isso em Java ???
ah! a propósito, Uso o NetBeans 6.7.1 para o desenho das telas e o Eclipse para a criação das classes “para o trabalho braçal”.

Quem puder me ajudar eu agradeço!

3 Respostas

Nicolas_Fernandes

Olá, Itamar!

Você pode fazer assim (eu faço assim, pelo menos):

  1. Crie uma classe que herde de JDialog. Eu chamo ela, normalmente, de BaseDialog.
  2. Na BaseDialog, coloque os atributos comuns de todos os formulários.
  3. Crie uma classe que herde de BaseDialog. Ela herdará tudo dessa classe, e você pode adicionar mais coisas.
  4. Você pode criar outra classe da classe criada no item 3. Esta pode ter mais coisas.
  5. E por aí vai indo.

Por exemplo:

Minha BaseDialog, por exemplo:

public abstract class BaseDialog extends JDialog {

   protected JPanel   myPanel;
   protected JButton myButton;

   public BaseDialog() {
      super(); 

      this.myPanel = new JPanel();

         this.myButton = new JButton("Mother's Button!");
         this.myPanel.add(this.myButton);

     this.add(this.myPanel);

   }

   protected void showDialog() {

      this.pack();
      this.setLocationRelativeTo(null);
      this.setVisible(true);
  }
}

Agora, um formulário qualquer herdando da BaseDialog:

public class MyDialog extends BaseDialog {

   private JButton myButton;

   public MyDialog() {

      super();
      
      this.myButton = new JButton("Daughter's Button");
      super.myPanel.add(this.myButton);

      super.showDialog();
   } 
}

Fiz aqui sem testar, mas é por aí!
Compile, teste e dê um reply aqui!

Espero ter ajudado!

[]'s

itamar-apuk

Valeu Nicolas!!!
Obrigado pela dica. Vou testar aqui!
Valeu mesmo!!!
ah, alias!! a classe pai tem que ser abstrata?

Nicolas_Fernandes

Itamar,

Não é que a classe Mãe tem que ser abstrata.
Colocando a cláusula abstract, isso impede de qualquer um que estiver manipulando o código de instanciar a classe Mãe, pra não haver confusão depois!

Esse é o intuito de usá-la como abstract!

Abraços!

Criado 14 de setembro de 2009
Ultima resposta 15 de set. de 2009
Respostas 3
Participantes 2