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: