Dificuldade ao passar dados de um Frame a outro

4 respostas Resolvido
F

Boa noite galera. Ja achei uma solução aqui no forum, porém estou com um problema no meu método…

private void abrirNovoJFrame(){
    //Variáveis para passar como parâmetro
    String data = new String("");
    String horario = new String("");
    
    for(int i=0; i <= tbConsultasMarcadas.getSelectedRow(); i++){
     //As variáveis recebem os valores da JTable
        data = (String) tbConsultasMarcadas.getValueAt(i, 3);
        horario = (String) tbConsultasMarcadas.getValueAt(i, 4);
        
    }
    AlteraConsultas janela = new AlteraConsultas();//Crio um formulário chamado janela, com base no formulário que eu quero abrir
  //Seto os JTextFields que eu tenho no segundo formulário com os valores de minhas variáveis



    janela.tfData.setText(data); //NESSA LINHA AQUI é onde ocorre um erro que diz "tfData has private access in AlteraConsultas"
    janela.tfHorario.setText(horario);
    janela.setVisible(true);
    }

Porem eu não sei como resolver, ja tentei colocar o tfData como public e nem deu certo, ou nem fiz direito… Se alguem puder me ajudar, agradeço…

4 Respostas

J

Vc pode usar o polimorfismo para resolver seu problema…

Toda classe existe um método construtor, mesmo que vc não digite ela, o java cria automaticamente. No caso de um jFrame ele está la… No seu caso a classe construtora é a

public AlteraConsultas(){

InitializeComponent();

}

Vc pode criar 2 classes construtoras e utilizar 1 delas passam parâmetros… Dentro do AlteraConsultas crie outro construtor

public AlteraConsultas(String a, String b){

InitializeComponent();

txtFieldA.setText(a);

}

Pronto… Na hora de instanciar
a classe vc terá 2 construtores

AlteraConsultas janela = new AlteraConsultas();//construtor 1

AlteraConsultas janela = new AlteraConsultas(“banana”,“arroz”);//construtor 2

F

E ae brow, obrigado pela resposta, eu fiz aqui, mais nem deu certo.
Esse eh meu Altera Consultas:

public class AlteraConsultas extends javax.swing.JFrame { 

public AlteraConsultas() {       
    initComponents();
}

public AlteraConsultas(String Data, String Horario){
    initComponents();
    tfData.setText(Data);
    tfHorario.setText(Horario);

}

Entendi dessa forma, não sei se entendi certo… E la na hora de instanciar ficou do msm jeito…

AlteraConsultas janela = new AlteraConsultas(data, horario);

    janela.tfData.setText(data); //AQUI AINDA CONTINUA O ERRO QUE DISSE.
    janela.tfHorario.setText(horario); //AQUI AINDA CONTINUA O ERRO QUE DISSE
    janela.setVisible(true);
    }

Se puder me ajudar, fico grato. Obrigado desde já !

F

Ai brow, ja consegui resolver. Fiz de outra forma. Mas msmo assim, obrigado pela ajuda!

Abraços.

F
Solucao aceita

Se alguem tiver o msmo problema fiz assim:

private void abrirNovoJFrame(){
    //Variáveis para passar como parâmetro
    String data = new String("");
    String horario = new String("");
    Integer codigo;
    codigo = null;

    if(tbConsultasMarcadas.getSelectedRow() != -1){
        for(int i=0; i <= tbConsultasMarcadas.getSelectedRow(); i++){
     //As variáveis recebem os valores da JTable
     
        data = (String) tbConsultasMarcadas.getValueAt(i, 3);
        horario = (String) tbConsultasMarcadas.getValueAt(i, 4);
        codigo = (Integer) tbConsultasMarcadas.getValueAt(i, 0);
    }
    
    
        enviadados = new AlteraConsultas();
        enviadados.setVisible(true);            
        enviadados.recebe(data, horario,codigo);
        
        }else{
        JOptionPane.showMessageDialog(this, "Selecione um registro!");
    }
    
}

e na outra tela fiz assim:

public class AlteraConsultas extends javax.swing.JFrame {    

public AlteraConsultas() {       
    initComponents();
    this.setLocationRelativeTo(null);
}   
//Recebe os dados da tabela ConsultasMarcadas
public void recebe(String data1, String horario1, Integer codigo){        
    tfData.setText(data1);
    tfHorario.setText(horario1);
    tfCodigo.setText(codigo.toString());

}

Abraços

Criado 6 de janeiro de 2016
Ultima resposta 6 de jan. de 2016
Respostas 4
Participantes 2