olá pessoal,
estou desenvolvendo uma aplicação para apresentar na faculdade e estou travado num problema. vou tentar explicar ao máximo.
A GUI da minha aplicação lembra um web browser atual (firefox por exemplo) com a classe principal contendo uma jMenubar e uma jTabbedpane, onde clicando numa jMenuItem ele adiciona uma tab e no conteúdo ele instancia uma segunda classe que é o jpanel da tab. esse jPanel são meus formulários.
Até aí sem problemas, tudo funcionando.
o problema é que eu preciso executar através de alguns jMenuItems da jMenubar da primeira classe, uns métodos que estão nesse segunda classe. As duas classes estão no mesmo pacote. já tentei instanciar, tentei Reflection e nada.
ja me aconselharam a usar somente uma classe, mas isso além de ser contra os principios de OO, iria dar um trabalhão pra reescrever todo o código.
se alguem puder me orientar, ficaria grato.
Opa…
Terias como postar o código com o problema que você está enfrentando?
Você tem 3 maneiras de acessar o método de outra classe (levando em consideração que a classe e seus métodos estejam visíveis):
Instanciando a classe e chamando o método com operador “.”(ponto).
Fazer a classe herdar os métodos da classe superior.
chamar diretamente da classe (se o método for static).
[quote=FKoehler]Opa…
Terias como postar o código com o problema que você está enfrentando?[/quote]
FKoehler, esse por exemplo é uma função para calcular alguns valores dos formulários.
Tava usando Reflection, mas se tiver algo mais fácil, melhor ainda.
private void jMenuItemCalcularActionPerformed(java.awt.event.ActionEvent evt) {
try {
Class cls = Class.forName("br.com.app.JPanelFormulario");
Method metodo = cls.getMethod("calcular");
br.com.app.JPanelFormulario calcular = new br.com.app.JPanelFormulario();
Object retobj = metodo.invoke(calcular);
}
catch (Throwable e) {
System.err.println(e);
}
}
ele tá dando uma exceção de ‘Index Out of bound Exception’.
eu entendi o porque do problema, ele executa o método, mas teria que especificar a ele para ele executar o método na tab que está sendo exibida no momento. Se eu instanciar uma nova classe e executar esse método, ocorre essa exceção.
obrigado pela ajuda.
[quote=Lucas Emanuel]Você tem 3 maneiras de acessar o método de outra classe (levando em consideração que a classe e seus métodos estejam visíveis):
Instanciando a classe e chamando o método com operador “.”(ponto).
Fazer a classe herdar os métodos da classe superior.
chamar diretamente da classe (se o método for static).[/quote]
Lucas, o problema é executar um método numa instância já criada.
ja tentei usar ‘static’, mas meu metodo calcular usa outros metodos da própria classe para fazer o calculo, por isso não da pra ser static.
to apanhando feio aqui… rsrsrs
obrigado pela ajuda.
rabugento,
Pode passar o resto do seu código para podermos te ajudar?
Sem vê-lo vou ficar apenas dando palpites aleatórios…
[]s