Boa noite a todos.
Na verdade era essa classe Login populada que voce deveria passar para a MDIFilha2.
O problema é que voce está usando "DefaultTableModel" para popular o seu JTable. O DefaultTableModel engenssa o desenvolver a um tipo de tabela padrão e não permite voce dinamizá-lo. Já com AbstractTableModel, permite voce criar uma modelagem de tabela para JTable, ao seu gosto, inclusive popular o JTable dentra dela, vamos a um exemplo:
import javax.swing.table.AbstractTableModel;
import java.util.List;
br.com.pauloh3nrique.logica;
public class UsuarioModel extends AbstractTableModel {
private List<Login> dataset;
private static final String[] col = {"ID","Nome","Usuário"};
public UsuarioModel(List<Login> usuarios){
dataset = new ArrayList<Login>(usuarios);
fireTableStructureChanged();
}
public int getRowCount() {
return dataset.size();
}
public int getColumnCount() {
return col.length;
}
public Object getValueAt(int rowIndex, int columnIndex) {
Login user = dataset.get(rowIndex);
Object[] row = {
user.getId(),
user.getNome(),
user.getUsuario()
};
return row[columnIndex];
}
@Override
public boolean isCellEditable(int rowIndex, int columnIndex){
return false;
}
public List<Login> getUsuarios(){
return dataset;
}
@Override
public String getColumnName(int column){
return col[column];
}
public Login getRow(int row) {
return dataset.get(row);
}
}
Agora lâ no método ListarUsuarios da MDIFilha1, popule o JTable assim:
private void listarUsuarios() throws SQLException {
LoginDao dao = new LoginDao();
usuarios = dao.getUsuarios();
if (usuarios.isEmpty()) {
JOptionPane.showMessageDialog(null, "Nenhum usuário encontrado!");
} else {
tmUsuarios.setModel(new UsuarioModel(usuarios));
}
}
Pronto, agora voce abilitou o seu JTable a retornar um classe Login totalmente populada através do seu Método getRow(), o qual ao se clicar em cima da linha do seu JTable, voce pode ao mesmo tempo instanciar a MDIFilha2, passando o valor do método getRow(), onde dentro do construtor da MDIFilha2, voce cria uma passagem de parâmento do tipo Login. Ex.:
// Classe MDIFilha2
public class GUICadastrarUsuario extends javax.swing.JInternalFrame {
private Login usuario;
public GUICadastrarUsuario(Login usuario){
this.usuario = usuario;
}
.....
.....
}
// Chamada a classe MDIFilha2
private GUICadastrarUsuario cadastrarUsuario;
private void jButtonAlterarActionPerformed(java.awt.event.ActionEvent evt) {
UsuarioModel usermodel = (UsuarioModel)tmUsuarios.getModel();
Integer rowuser = tmUsuarios.getSelectedRow();
if (rowuser < 0){
JOptionPane.showMessageDialog(null,"Selecione uma linha do JTable");
} else if ((cadastrarUsuario == null) || (!cadastrarUsuario.isVisible())) {
cadastrarUsuario = new GUICadastrarUsuario(usermodel.getRow(rowuser));
this.getParent().add(cadastrarUsuario);
cadastrarUsuario.setPosicao();
cadastrarUsuario.setVisible(true);
}
try {
cadastrarUsuario.setSelected(true);
} catch (PropertyVetoException exc) {
JOptionPane.showMessageDialog(null,"Não foi possível selecionar a janela de edição de usuário!\nMotivo: " + exc.getMessage());
}
}
Espero ter ajudado.