Fala galera, beleza??? Estou com a seguinte dúvida:
Tenho a classe Main, a classe Veículos e a classe interfaceGráfica, esta última responsável por carregar os JLabels, JTextFields, JButtons entre outros… A partir dos JButtons serão realizadas todas as ações, como incluir, excluir, consultar, sair etc… A dúvida é, se o método actionPerformed ficar na classe interfaceGráfica, todas as chamadas aos métodos da classe veículos serão feitos através desta classe e não através da classe Main, deixando a esta praticamente sem funcionalidade, correto??? Como fazer neste caso???
PAra começar a sua classe Main não se deve chamar assim. Deve ter o nome do seu sistema ou algo que indique que é ali que tudo começa como Starter. Mas isso é o de menos.
Não ha problema nenhum em que a sua classe principal só invoque algum me´todo noutra classe/objeto.
Se a sua classe principal apenas dá um new na tela e a mostra. otimo. Não ha mal nenhum nisso. É até aconselhável. A única funcionalidade que a classe principal precisa é o método public static void main (String … args ) :lol:
O actionPerformed é que não devia ficar na classe de UI. Deveria ficar numa inner class ou numa classe completamente separada. Eu sei que vc deixa ai para ter acesso ao resto dos objetos, mas vc tb pode fazer isso de dentro de uma inner class.
thundercas
Bom, na verdade, eu disse classe Main apenas para vocês entenderem que esta é a classe Main… Aqui nomeei como Principal…
Então quer dizer que não é uma contra-regra utilizar a classe Main (Principal) apenas para inicializar o programa?? Pelo menos é isso o que todos os professores e livros dizem quando estamos estudando java hehehe…
sergiotaborda
Nunca vi nenhum livro dizer isso. Se tiver à mão, cite onde fala isso.
Quanto aos professores : vc ainda confia nos seus professores ? :lol:
fabim
Alguem tem que chamar a thread principal (main)… se vc vai simplesmente mostrar a tela de cara, sem carregar nada antes, nao inicializar nenhum driver nem ler nenhum arquivo de configuração, entao taca o main( String args[] ) dentro da tela de UI mesmo…
Se vc for fazer qqer coisa antes de abrir a tela… entao o main fica em uma classe principal ( como vc mesmo ja nomeou, Principal.java ), onde vc vai fazer outras coisas, além de chamar a tela…
thundercas
Pow, agora eu travei de vez… Eu decidi adotar a dica de vocês e criei a interface direto no método Principal… Mas eu não consigo chamar o método montaTela… Ocorre o seguinte erro
Agora, se eu defino o método montaTela como estático, daí eu não consigo chamar o método addActionListener() com o argumento this… Ocorre o seguinte erro:
Sei que trata-se de conceito, mas não consigo achar a saída… Obrigado!!!
sergiotaborda
Siga as instruções :
use o main apenas para lançar a janela principal. Não crie o main na janela porque isso é violação de encapsulamento. Só faça isso se tiver construindo um exemplo ou uma prova de conceito.
Use WindowListener para responder aos eventos da janela. E chame o seu método num deles. Não chame o método de dentro do main porque além disso violar o encapsulamento tb problemas com threads ( o swing tem a sua propria thread que não é a mesma que o do método main)