Transformar uma classe GUI em interface no NetBeans

10 respostas
Zeed01

Boa tarde colegas !

Eu criei uma classe que implementa um GUI no NB e agora queria transformá-la em um interface, pois assim poderia utilizá-la para criação de outras GUI muito parecidas.

No entando, como ela foi criada no NB existem várias partes do código que ficam bloqueadas e estou recebendo erro na hora de compilar como interface:

D:\ProjetoATM2\ATM2-Teste Interface\src\com\atm\gui\InterfaceCadastroApartamento.java:34: <identifier> expected
    private InterfaceCadastroApartamento() {

D:\ProjetoATM2\ATM2-Teste Interface\src\com\atm\gui\InterfaceCadastroApartamento.java:495: = expected
    protected javax.swing.JButton btAnterior;

Alguém já passou por isso ?
Numa interface eu tenho sempre que inicializar meus objetos ?

Por exemplo, eu tinha um atributo declarado assim:

private Condominio condominio;

Tive que mudar para:

private Condominio condominio = null;

Porque também reclamava: “= expected”.

Se alguém puder ajudar fico muito agradecido.

Abraços a todos.

10 Respostas

vhuzalo

Zeed,

Para isto vc não precisa criar uma interface, ela pode ser uma classe normal, ou até uma classe abstrata.

As interfaces servem apenas para definir métodos abstratos(não implementados) e constantes.

Implementando tua janela, as outras apenas a extenderão.

:thumbup:

Zeed01

Boa tarde colegas !

vhuzalo

Como classe abstrata eu só poderia ter métodos abstratos, ja na interface eu posso ter métodos concretos e abstrados, não é isso ?

Incialmente realmente apenas extendi a classe para outras, mas como ela foi criada pelo NB ele coloca, por exemplo, todos os JTextField como private e eu não consigo alterar…

E compilando como interface esta dando esses erros que eu comentei.

[]s

vhuzalo

Zeed,

As classes abstratas podem sim conter metodos concretos, a única restrição é quanto sua instanciação, obrigando ela a ter classes filhas.

As interfaces podem apenas conter uma especificação de um comportamento.

Por esta diferença eu te indiquei esta forma de desenvolvimento…

Quanto à visibilidade dos componentes, não conheço a fundo o netbeans, mas deve haver alguma opção para alterar a visibilidade, se não houver, porque não implementar como uma classe não-visual, fora do ambiente do matisse, se teu problema é apenas modelar a classe.

Caso tenha alguma dúvida, dê mais uma olhada nos artigos, aquimesmo no guj existem vários muit obons sobre OO

:thumbup:

P

Não se preocupe em transformar a sua classe em interface ou classe abstrata…

Se ela é uma janela funcional, utilize-a, e para gerar outras parecidas, faça extends dessa sua janela pronta, tomando os devidos cuidados.

Zeed01

Então a opção de implementar como uma classe visual foi pra poder utilizar as facilidades do Mattisse do NB mesmo.

Vou tentar alterar para classe abstrata…

Valeu !

[]s

Zeed01

paulohrl

Eu tinha feito isso, mas dai cai numa situação que um dos botões deveria ter um comportamento diferente na filha, ou seja, pera preciso sobrescrever o método de action dele… que esta como private.

Alem disso, na filha preciso, por exemplo, pegar o falor de um JTextField que é da mãe… se ele não esta como protected também não consigo.

A não ser que saia criando get e set publico dos JTextField…

Como fazer isso ?

Um abraço.

P

Quanto ao botão, vc poderia reescrever o actionPerformed, ou vc deixa ele protected, retira o actionListener e adiciona um novo actionListener.

Quanto aos JTextFields, deixa como protected, ou eles ou os getters e setters, ou seja, serão visíveis somente na classe, no pacote e nas filhas…

Acho que isso ja resolve seu problema.

maior_abandonado

la no net beans, nakela interfacezinha la dele, vc clicando no JtextField em questão, ai ao lado vc clica em codigo la aonde tem codigo propriedades e eventos, la vai ter uma opção modificadores de variaveis, aonde vc dexa como static, final, coisa assim ou modificadores de acesso como public,etc…

po… mais fazer uma janela com swing e awt é simples…se vc pegar pra estuda eu tenho ccerteza q vc aprende rapidao caso vc não saiba…

essa apostila ensina bastante coisa disso, e um poco acesso ao de banco de dados com java:

http://www.apostilando.com/download.php?cod=2547&categoria=Java

Zeed01

maior_abandonado:

O problema não esta na dificuldade em fazer uma janela no netbeans… e sim em não fazer duas janelas exatamente iguais visualmente, ou seja, reaproveitar código, entendeu ?

Quanto a alterar na propriedade do JTextField para protected, eu ja tinha feito… o problema é que mesmo fazendo isso método actionPerformed continua como private, sendo assim não tenho como reescreve-lo.

[]s.

fabim

Zeed01:
maior_abandonado:

O problema não esta na dificuldade em fazer uma janela no netbeans… e sim em não fazer duas janelas exatamente iguais visualmente, ou seja, reaproveitar código, entendeu ?

Quanto a alterar na propriedade do JTextField para protected, eu ja tinha feito… o problema é que mesmo fazendo isso método actionPerformed continua como private, sendo assim não tenho como reescreve-lo.

[]s.

Usando herança vc consegue otimizar bastante suas telas.
Como o Luca disse uma vez procure utilizar no maximo 3 tamanhos de telas diferentes.

Seus JDialogs de cadastro tem sempre um botao OK e um Cancelar, no canto inferior direito? crie um AbstractDialog e coloque todos componentes e comportamentos comuns nele. Existem diveros comportamentos que são padrão pra todas as telas. Ex: ao teclar ENTER pular pro proximo campo, ESC executa o cancelamento da tela, por ai vai.

De uma tela pra outra, só vai mudar o ‘miolo’.

Criado 6 de setembro de 2007
Ultima resposta 10 de set. de 2007
Respostas 10
Participantes 5