[RESOLVIDO]Alterar jTextField através de outra classe

Bom dia,

Como eu altero através da classe x, um jTextField que está no JForm y? Eu sei acessar o valor do jTextField, mas não sei usar o set para alterar o valor do jTextField. Pra acessar faço o seguinte:

String recebeValor;
ClasseY y = new ClasseY();
recebeValor = y.getjTextField().getText();

Como faço pra alterar o valor do jTextField?

Vc pode fazer a opção de deixar o campo da nova Janela como static, ou fazer o esquema de parent, mas a nova Janela precisa ter um construtor referente a classe que estará chamando. Exemplo

public Frame1(){...}

public Frame2(Frame1 parent){...}

Pra chamar vc coloca o this

Frame2 frame = new Frame2(this);
String blabla =  frame.campoDeLa.getText();

Obrigado pela resposta, mas não entendi o que deve ser feito.

Pra exemplificar minha dúvida:

Eu tenho este jTextField que fica em uma classe chamada Atualizar
image
Preciso escrever algo dentro desse jTextField através de uma classe chamada AtualizarController.

Se o jTextField tivesse dentro da classe AtualizarController, eu simplesmente faria:
jTextField.setText("escrita");

Porém como faço esse comando acima a partir de outra classe?

Mas qual será o evento de disparo? Suponto que o envio ocorre por meio de um botão:

1 - Tela Atualizar

public class Atualizar extends javax.swing.JFrame {
	private AtualizarController telaAtualizarController;
	
	private void btnAtualizarActionPerformed(java.awt.event.ActionEvent evt) {                                                          
        if(telaAtualizarController == null){
            telaAtualizarController = new TelaAtualizarController();
            telaAtualizarController.setVisible(true);
            telaAtualizarController.setLocationRelativeTo(this);
        }else{
            telaAtualizarController.setVisible(true);
            telaAtualizarController.setLocationRelativeTo(this);
            telaAtualizarController.setState(NORMAL);
        }
        telaAtualizarController.carregarValor(txtTela1.getText().trim());
    }
	
	{...}
	
	private javax.swing.JTextField txtTela1;
}

2 - TelaAtualizarController

public class AtualizarController extends javax.swing.JFrame {
	
	protected void carregarValor(String valor){
		txtTela2.setText(valor);
	}
	
	{...}
	
	private javax.swing.JTextField txtTela2;
}

Não resolve?

Vou colocar o código pra ser mais assertivo. O código abaixo está dentro da classe AtualizarFichaDAO

public boolean selectColocarInformacoesNaTela(String codigoProc) {
    AtualizarFicha tela = new AtualizarFicha();
    String sqlSelect = "SELECT * FROM ficha WHERE codigo = ?";
    PreparedStatement stmt = null;
    ResultSet rs = null;

    try {
        stmt = con.prepareStatement(sqlSelect); //Abre uma preparação instrução SQL para enviar ao banco
        stmt.setString(1, codigoProc); //Preenche valor ?
        rs = stmt.executeQuery(); //Envia SQL preenchido para banco

        while (rs.next()) {

            String nomeColchao = rs.getString("nomecolchao");
            String codigo = rs.getString("codigo");
            String suportePeso = rs.getString("suportepeso");
            String pillowEuro = rs.getString("pilloweuro");
            byte[] imagem = rs.getBytes("imagem");                

        }
        return true;
    } catch (SQLException ex) {
        JOptionPane.showMessageDialog(null, "Erro: " + ex);
        return false;
    }
}

Eu preciso colocar as informações resgatadas do banco de todas as variáveis (nomeColchao, codigo, suportePeso, pillowEuro, imagem) em diferentes jTextFields que ficam em outra classe chamada AtualizarFicha. Segue imagem dos lugares que tem de serem preenchidos com aquelas variáveis da classe AtualizarFichaDAO:

image

Não entendi… o método retornar um booleano? Não deveria retornar um objeto do tipo ‘AtualizarFicha’ ou no mínimo uma lista do tipo String? Como pretende recuperar os dados se o método não tem o tipo de retorno adequado?

Mas se eu retornar um objeto por exemplo do tipo ‘AtualizarFicha’, quando eu for preencher os jTextFields, vou ter que executar este método toda hora até preencher todos os jTextsFields(são 39 ao todo), fora isso tem outras complicações também. Pelo menos eu não tive lógica pra pensar uma forma que resolvesse este problema. Acabei deixando fora do padrão MVC, criei o método ‘selectColocarInformacoesNaTela’ diretamente no jForm e não mais dentro da classe AtalizarFichaDAO, porque ai através disso, consigo usar o comando ‘jTextField.setText()’ sem problemas.

De qualquer forma, agradeço a ajuda.

É para casos como estes que existem as variáveis globais… Você pode criar um método que preencha todos os campos e que receba como parâmetro uma variável global. Daí tu pode ‘descarregar’ os dados na variável global apenas uma vez, por exemplo, quando a tela é aberta. Exemplo:

1 - Tela do pacote view

/*
* Variável global
*/
private bean.AtualizarFicha ficha;

/*
* Método chamado na inicialização para preencher a ficha
*/
private void carregarDados(){
	try{
		ficha = dao.AtualizarFicha.pesquisarDados();
	}catch(SQLException sqle){
		System.out.println("Impossível carregar os dados!");
	}
}

/*
* Método responsável por preencher os campos com as informações da ficha
*/
private void preencherCampos(bean.AtualizarFicha ficha){
	jTextField1.setText(ficha.getCampo1());
	jTextField2.setText(ficha.getCampo2());
	{...}
	jTextFieldk.setText(ficha.getCampok());
	{...}
	jTextField39.setText(ficha.getCampo39());
}

2 - Método pesquisarDados da classe AtualizarFicha do pacote dao

public class AtualizarFicha{
	public static bean.AtualizarFicha pesquisarDados() throw SQLException{
		bean.AtualizarFicha ficha = new AtualizarFicha();
		
		try(Connection conectaBancoDeDados = ConectaBancoDeDados.getConexao()){
			String strSQLPesquisa = "SELECT * FROM ficha WHERE codigo = ?";
			
			try(PreparedStatement pstmt = conectaBancoDeDados.preparedStatement(strSQLPesquisa)){
				try(ResultSet rstSet = pstmt.executeQuery()){
					rstSet.first();
					
					ficha.setCampo1(rstSet.getLong("codigo_ficha"));
					ficha.setCampo2(rstSet.getTipoDados("campo2"));
					{...}
					ficha.setCampo39(rstSet.getTipoDados("campo39"));
				}
			}
		}
		return ficha;
	}
}

No caso, se for retornado somente uma ficha. Caso sejam várias, tu pode usar uma lista…

Deu certo, obrigado irmão!