Como deixar setado os dados deuma aba(jTabbedPane

Preciso de uma ajuda pra terminar um projeto , eu possuo um formulário onde nele possui uma jtable onde tem uma lista de clientes , e ao selecionar essa lista atravéz de um botão de abrir abre o cadastro desse usuário , nesse cadastro contém abas que são relacionadas ao cadastro dele , uma das abas chama-se dados pessoais e a outra anamnese , a aba dados pessoais quando seleciono o cliente e Clico em abrir já abre com os dados Setados nos campos , preciso fazer a mesma coisa na aba anamnse e nas outras abas que pretendo criar . Vou deixar uma imagem do formulário para um melhor entendimento


!

Cria um método setCliente em cada uma das suas abas e ao selecionar um cliente você passa esse cliente como parâmetro pra cada aba.

Então a questao em si é como faço para acessar a aba , porque ela é um jTabbedPane que contém jpanel , o botão eu sei que se vc clicar nele duas vezes vai na ação dele , e da aba como seria ?

Então, cada aba do seu JTabbedPane não é uma classe que estende JPanel?
Declara um método setCliente(Cliente cliente) nessas classes.

Segue exemplo.

Uma classe hipotética Cliente:

import java.util.*;

public class Cliente {

  private String nome;
  private String sobrenome;
  private int idade;
  private double peso;
  private double altura;

  // método hipotético para listar todos os clientes
  // na prática seria uma consulta ao banco de dados
  public static List<Cliente> listarTodos() {
    return Arrays.asList(
        new Cliente("Ricardo", "Staroski", 40, 110.0, 1.81),
        new Cliente("Fulano", "de Tal", 20, 80.0, 1.75),
        new Cliente("Ciclano", "de Tal", 18, 75.5, 1.90),
        new Cliente("Beltrano", "de Tal", 35, 95.0, 1.69)
    );
  }

  public Cliente() {}
  
  public Cliente(String nome, String sobrenome, int idade, double peso, double altura) {
    this.nome = nome;
    this.sobrenome = sobrenome;
    this.idade = idade;
    this.peso = peso;
    this.altura = altura;
  }

  public double getAltura() {
    return altura;
  }

  public int getIdade() {
    return idade;
  }

  public String getNome() {
    return nome;
  }

  public double getPeso() {
    return peso;
  }

  public String getSobrenome() {
    return sobrenome;
  }

  public void setAltura(double altura) {
    this.altura = altura;
  }

  public void setIdade(int idade) {
    this.idade = idade;
  }

  public void setNome(String nome) {
    this.nome = nome;
  }

  public void setPeso(double peso) {
    this.peso = peso;
  }

  public void setSobrenome(String sobrenome) {
    this.sobrenome = sobrenome;
  }
}

Uma classe pai para suas abas que vão renderizar clientes:

import javax.swing.*;

// um JPanel hipotético que aceita um Cliente como parâmetro
public abstract class AbaCliente extends JPanel {
  
  public abstract void setCliente(Cliente cliente);
}

A classe da primeira aba:

import java.awt.*;
import javax.swing.*;

public class Aba0 extends AbaCliente {

  private JLabel label;

  public Aba0() {
    setLayout(new BorderLayout());
    label = new JLabel();
    add(BorderLayout.CENTER, label);
  }

  @Override
  public void setCliente(Cliente cliente) {
    label.setText(cliente.getNome());
  }

}

A classe da segunda aba:

import java.awt.*;
import javax.swing.*;

public class Aba1 extends AbaCliente {

  private JLabel label;

  public Aba1() {
    setLayout(new BorderLayout());
    label = new JLabel();
    add(BorderLayout.CENTER, label);
  }

  @Override
  public void setCliente(Cliente cliente) {
    label.setText(cliente.getSobrenome());
  }

}

A classe da terceira aba:

import java.awt.*;
import javax.swing.*;

public class Aba2 extends AbaCliente {

  private JLabel label;

  public Aba2() {
    setLayout(new BorderLayout());
    label = new JLabel();
    add(BorderLayout.CENTER, label);
  }

  @Override
  public void setCliente(Cliente cliente) {
    label.setText(cliente.getIdade() + " anos");
  }

}

A classe da quarta aba:

import java.awt.*;
import javax.swing.*;

public class Aba3 extends AbaCliente {

  private JLabel label;

  public Aba3() {
    setLayout(new BorderLayout());
    label = new JLabel();
    add(BorderLayout.CENTER, label);
  }

  @Override
  public void setCliente(Cliente cliente) {
    label.setText(cliente.getPeso() + " Kg");
  }

}

A classe da quinta aba:

import java.awt.*;
import javax.swing.*;

public class Aba4 extends AbaCliente {

  private JLabel label;

  public Aba4() {
    setLayout(new BorderLayout());
    label = new JLabel();
    add(BorderLayout.CENTER, label);
  }

  @Override
  public void setCliente(Cliente cliente) {
    label.setText(cliente.getAltura() + " m");
  }

}

E finalmente a tela que vai apresentar isso tudo:

import java.awt.*;
import java.util.List;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.table.*;

public class Janela extends JFrame {

  public static void main(String... args) {
    try {
      UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
      Janela janela = new Janela();
      janela.setVisible(true);
    } catch (Throwable t) {
      t.printStackTrace();
    }
  }

  private class ClienteTableModel extends AbstractTableModel {

    private final String[] colunas = {"NOME", "SOBRENOME", "IDADE", "PESO", "ALTURA"};

    @Override
    public int getRowCount() {
      return clientes.size();
    }

    @Override
    public int getColumnCount() {
      return colunas.length;
    }

    @Override
    public String getColumnName(int col) {
      return colunas[col];
    }

    @Override
    public Object getValueAt(int row, int col) {
      Cliente cliente = clientes.get(row);
      switch (col) {
        case 0:
          return cliente.getNome();
        case 1:
          return cliente.getSobrenome();
        case 2:
          return cliente.getIdade();
        case 3:
          return cliente.getPeso();
        case 4:
          return cliente.getAltura();
        default:
          return null;
      }
    }
  }

  private List<Cliente> clientes = Cliente.listarTodos();
  private JTabbedPane tabbedPane;

  public Janela() {
    super("Exemplo");
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    setMinimumSize(new Dimension(800, 600));
    Container container = getContentPane();
    container.setLayout(new GridLayout(2, 1));

    JTable table = new JTable(new ClienteTableModel());
    table.getSelectionModel().addListSelectionListener(new ListSelectionListener() {

      @Override
      public void valueChanged(ListSelectionEvent e) {
        selecionouCliente(e.getLastIndex());
      }
    });
    container.add(new JScrollPane(table));


    tabbedPane = new JTabbedPane();
    container.add(tabbedPane);

    tabbedPane.addTab("Primeira Aba", new Aba0());
    tabbedPane.addTab("Segunda Aba", new Aba1());
    tabbedPane.addTab("Terceira Aba", new Aba2());
    tabbedPane.addTab("Quarta Aba", new Aba3());
    tabbedPane.addTab("Quinta Aba", new Aba4());
  }

  // atualiza cada aba com o cliente selecionado na tabela
  private void selecionouCliente(int linha) {
    Cliente selecionado = clientes.get(linha);
    int abas = tabbedPane.getTabCount();
    for (int i = 0; i < abas; i++) {
      AbaCliente aba = (AbaCliente) tabbedPane.getComponentAt(i);
      aba.setCliente(selecionado);
    }
  }
}

Print screen do programa rodando:

1 curtida

Obrigado vou colocar em prática