Dúvida Rápida

Seguinte to implementando o séguinte método

  void openWindow( ) {
    TelaPadrao dlg = new TelaPadrao(this);
    Dimension dlgSize = dlg.getPreferredSize();
    Dimension frmSize = getSize();
    Point loc = getLocation();
    dlg.setLocation( (frmSize.width - dlgSize.width) / 2 + loc.x,
                    (frmSize.height - dlgSize.height) / 2 + loc.y);

    dlg.pack();
    dlg.show();
  }

O problema é que preciso passar o parametro de entrada que eh o “TelaPadrao” como faço isso?

Não entendi direito. Como assim passar o parametro de entrada que eh o “TelaPadrao”?

Entendi que o seu método openWindow cria o TelaPadrao e seta a localização e visualização… mas o que vc quer fazer?

Também não entendi mto bem o que vc quer fazer!!

mas se vc cria o telapadrao dentro do teu método, pq passa-lo como parametro??

Ou você quer que ele seja passado como parametro para outro método? Se for isso, ou vc coloca ele como um objeto da tua classe e ai outros métodos terão acesso, ou então ao invés de retornar void manda retornar um telapadrao.

se não for nada disso, explica melhor o que vc ta querendo.

é o seguinte…
esse método eu to implementando para chamar uma nova janela. no caso ele vai ser chamado nos eventos Action Performed dos botões. Então eu tenho que passar como parametro o nome da tela que é para chamar. Vamos a um exemplo prático.

 void jButton8_actionPerformed(ActionEvent e) {
   openWindow():
}

O botão que tem esta ação é o botão que abre a tela de cadastro de clientes por exemplo. Então tenho que passar como parametro para este método qual tela chamar… gostaria de saber como fazer isso

Agora entendi…

Vc pode fazer o seguinte… usa reflection… ou seja, vc passar o nome da Tela por parâmetro, para o método openWindow(“NomeDaClasse”) e ai dentro deste método vc instância a Janela correspondente… Vc pode utilizar o pattern Factory… uma Fábrica de Janela, onde vc pssar o nome da janela e ele te retorna…

Blz? Resumi bem… mas se ainda tiver dúvida eu monto um exemplo pra vc… :wink:

Sem querer abusar da sua boa vontade seria interessante eu dar uma olhada em algum exemplo q vc tiver ai…

valeu

douglas

Ai vai um exemplo…

Fiz um código bem otimizado…

package janelas;

import javax.swing.JFrame;

public class Janela1 extends JFrame {
  public Janela1() {
    super("Janela1");
    this.setSize(300,300);
    this.setVisible(true);
  }
  
}
package janelas;

import javax.swing.JFrame;

public class Janela2 extends JFrame {
  public Janela2() {
    super("Janela2");
    this.setSize(100,100);
    this.setVisible(true);
  }

}
package janelas;

import javax.swing.JFrame;

public class ChamaJanelas {
  
  //Como se fosse sua fábrica de janela
  public static JFrame openWindow(String nomeJanela) throws Exception {
    try {
      return (JFrame) Class.forName(nomeJanela).newInstance();
    }
    catch (Exception ex) {
      throw ex;
    }
  }

  public static void main(String[] args) {
    try {
      JFrame j = openWindow("janelas.Janela2");
      //JFrame j = openWindow("janelas.Janela1");
    }
    catch (Exception ex) {
      ex.printStackTrace();
    }
  }
}

Como vc pode ver… as janelas Janela1 e Janela2, são janelas especializadas… ai vc cria uma fábrica, que neste caso é classe ChamaJanelas, onde tem o método openWindow (um nome melhor para este método seria FrameFactory) recebe uma String como o caminho da Janela que vc quer visuaizar…

Qualquer coisa, estamos ai… :wink:

Valeu, vou testar… :twisted: