[RESOLVIDO] Como chamar uma variável de um controller em outro controller?

Eu tô fazendo uma aplicação para cadastramento de laudos para um trabalho da faculdade. Tenho vários arquivos FXML (Tabs) e um principal. Esse principal contém a variável ‘número do laudo’, as tabs possuem dados do laudo (e cada uma possui o seu controller). Preciso gravar no banco de dados (SQLite) esses dados das tabs referenciando o número do laudo para eu poder carregar as informações em cada tela posteriormente. Como eu posso “chamar” essa variável?

Exemplo tirado do problema:

 //tela principal
 public class SampleController {


@FXML	TextField txtNrLaudo;
@FXML	TabPane tabPane;

public void carregaLaudo() {
	//método para carregar dados do banco de dados
}
//tab para cadastro de dados   
public class ObservacoesController {
//observações no laudo
@FXML	private TextArea txtObservacoes;
    
public void gravaObservacao() {
	try {
		Connection conn = Conexao.getConexao();
		String sql = "Insert into observacao (obs) values (?)";
		
		PreparedStatement ps = conn.prepareStatement(sql);
		ps.setString(1, txtObservacoes.getText());
		ps.executeUpdate();
		conn.close();
		
	}catch (Exception e) {
		e.printStackTrace();
	}
	
}

}

Eu adotaria outra estratégia, faria com que o Controller buscasse o valor das telas diretamente. A patir da Controller você não consegue acessar todos os valores da tela?

teria o mesmo problema porque são telas diferentes… uso TabPane no SceneBuilder

1 curtida

Em ObservacoesController você quer ter acesso a txtNrLaudo que está em SampleController?
Quem cria a instancia de SampleController? Da para passa a referencia de ObservacoesController para SampleController no construtor dai txtNrLaudo fica acessivel em SampleController.

1 curtida

entendi, obrigado