[quote=eberson_oliveira]Olá edimil,
Na minha opinião você poderia fazer (nesse seu cenário) o seguinte:
Um enum para representar as telas que você pode/pretende abrir por este método:
[code]public enum Tela{
DEPARTAMENTO{
@Override
public JInternalFrame openWindow() {
//aqui você ter feito alguma outra coisa referente à tela Departamento que o invocador não fosse obrigado a saber…
return new JInternalFrame( “Departamento” );
}
},
FUNCIONARIO;
public JInternalFrame openWindow(){
return null; //aqui você define qual será o retorno default para um item que não o subscreva…
}
}[/code]
Através do método openWindow (coloquei esse nome, pois estou sem criatividade para nomes… ) você poderia abrir a tela que fosse necessária a cada item do enum. Essa abordagem seria legal, pois ninguém além do enum saberia qual tela está sendo instanciada e você invocar os métodos particulares de cada tela dentro desse enum.
[code]public void visualizaTela( Tela tela ) {
JInternalFrame dp = tela.openWindow();
if ( dp == null ){
System.out.println( “não abriu a tela” );
return; //como defini que o valor padrão seria null, vou precisar tratá-lo de alguma forma… poderia ter lançado uma exceção… sei lá…
}
jdpDesktop.add(dp);
dp.setLocation(1, 90);
dp.setVisible(true);
try {
dp.setSelected(true);
} catch (java.beans.PropertyVetoException e) {
}
}[/code]
Note que desta forma o visualiza tela não vai precisar conhecer a tela que está abrindo… ele apenas pega o enum e invoca o seu método. Este seLocation poderia estar dentro do enum se existir um valor diferente definido para cada tela…
visualizaTela( Tela.FUNCIONARIO );
visualizaTela( Tela.DEPARTAMENTO );
No botão ou qualquer lugar onde precisasse invocar esse visualiza tela você passaria apenas o enum necessário a abertura esperada.
Lógico que não conheço a sua aplicação… de repente posso ter proposto algo que não seja compatível com a seu ambiente… mas olhando apenas aquele trecho de código imaginei isso.
Em todo caso, seria interessante dar uma estudada melhor nos conceitos de OO (como já foi proposto) mas que possa avaliar melhor o seu cenário.
Espero ter ajudado,
[]s
Eberson é exatamente como vc entendeu, fiz como vc propôs, mas a minha tela não quer aparecer, não dá nenhum erro, onde posso ter errado, meu código está assim:
public enum Tela {
Departamento {
@Override
public JInternalFrame openWindow() {
return new JInternalFrame();
}
},
Cargo;
public JInternalFrame openWindow() {
return null;
}
}
public void visualizaTela(Tela tela) {
JInternalFrame window = tela.openWindow();
if (window == null) {
System.out.println("não abriu a tela");
return;
}
jdpDesktop.add(window);
window.setLocation(1, 90);
window.setVisible(true);
try {
window.setSelected(true);
} catch (java.beans.PropertyVetoException e) {
}
}
private void jMenuItem4ActionPerformed(java.awt.event.ActionEvent evt) {
visualizaTela(Tela.Departamento);
}
o construtor da classe Departamento está assim
public Departamento() {
super("Cadastro de Departamento",true,true);
initComponents();
setSize(800, 400);
setResizable(false);
objConexao.conecta();
preencheTable(sqlTable);
jTextField1.requestFocus();
setVisible(true);
}
Desde já agradeço sua atenção…
[/quote]