[RESOLVIDO]Inicializar JFXML com argumentos

2 respostas
Jubarius

Boa tarde pessoal,

Gostaria de perguntar se existe alguma forma de inicializar uma tela passando algum argumento. Por exemplo no Java normal quando criamos a tela podemos passar alguns argumentos para a inicialização, como:

//Em Java
new Tela(arg1, arg2);

Ou pelo menos alguma forma de passar atributos para a nova tela.

2 Respostas

Valkyrium

Boa tarde!

Acho que a solução mais óbvia é trabalhar com variáveis estáticas e "getters e setters".

public class PrimeiraTelaController implements Initializable {

  // Demais códigos...

  SegundaTelaController.setVariavel(str1);
  new SegundaTela().start(new Stage());

  // Outros códigos...

}
public class SegundaTelaController implements Initializable {

  private static String variavel;

  public static String getVariavel() {
    return variavel;
  }

  public static void setVariavel(String variavel) {
    SegundaTelaController.variavel = variavel;
  }

  // Demais códigos...

}

Veja se te ajuda...

Jubarius

Bom dia povo,

Achei outro jeito de fazer sem criar variáveis estatícas. É só linkar o elemento que quer mudar no fxml com uma classe de controle (aquela paradinha de por exemplo marcar um Label com @FXML) e criar um get/set para esse elemento ou qualquer outro atributo da classe. Depois é só carregar o fxml assim:

//Não pode esquecer do comando openStream()
root = (Parent) fxml.load(Class.class.getResource(
					MsgConst.getDlgInfo()).openStream());

E depois carregar o controle:

MeuControle x = (MeuCotrole) fxml.getController();

Valeu pela ajuda, Valkyrium

Criado 7 de junho de 2013
Ultima resposta 8 de jun. de 2013
Respostas 2
Participantes 2