Oi pessoal.
Coloquei os dados de uma tabela em um jTable, sem problema. Mas tenho algumas dúvidas:
1ª) Como retornar o conteúdo de uma linha do jTable, eu consegui retornar o número da linha, mas não o seu conteúdo.
2ª) Tenho como deixar uma coluna sem acesso, ou seja, sem que o usuário possa alterar seu conteúdo?
Obrigado.
Como você colocou os dados no seu JTable?
Se foi através do DefaultTableModel, está explicado. Você fez do pior jeito. E por isso tem tantas dúvidas.
Dica: Aprenda a fazer seu próprio TableModel. Esses artigos podem te ajudar nessa tarefa:
http://www.informit.com/articles/article.aspx?p=332278
http://www.informit.com/articles/article.aspx?p=333472
Se quiser pegar algo já pronto, pegue algo melhor que esse DefaultTableModel. Pode ser esse model que eu postei no GUJ a pouco tempo atrás. Embora, para entende-lo é mais fácil saber como o JTable funciona de verdade (fazendo seu próprio model):
http://www.guj.com.br/posts/list/100793.java
Oi, ViniGodoy.
Eu fiz asssim:
private void listar_Estados() {
jtb_Estados.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] { },
new String [] {"Nome", "Abreviatura","Região","Código"}) {} );
jtb_Estados.setVisible(true);
jtb_Estados.getColumnModel().getColumn(0).setPreferredWidth(40);
jtb_Estados.getColumnModel().getColumn(0).setResizable(true);
jtb_Estados.getColumnModel().getColumn(1).setPreferredWidth(2);
jtb_Estados.getColumnModel().getColumn(1).setResizable(false);
jtb_Estados.getColumnModel().getColumn(2).setPreferredWidth(11);
jtb_Estados.getColumnModel().getColumn(2).setResizable(false);
jtb_Estados.getColumnModel().getColumn(3).setPreferredWidth(10);
jtb_Estados.getColumnModel().getColumn(3).setResizable(false);
try {
TestaConexao conexao = new TestaConexao();
conexao.conectaBanco();
String cQuerySql = "select * from Estados order by nome";
conexao.excluirDados(cQuerySql);
resultado_RS = conexao.consultarDados(cQuerySql);
while (resultado_RS.next()) {
javax.swing.table.DefaultTableModel dtm = (javax.swing.table.DefaultTableModel)jtb_Estados.getModel();
dtm.addRow(new Object[]{resultado_RS.getString("Nome"),resultado_RS.getString("Abreviatura"),resultado_RS.getString("Regiao"),resultado_RS.getInt("Codigo")});
}
} catch(Exception e){
JOptionPane.showMessageDialog(null, "Erro ao listar os estados", "Mensagens", JOptionPane.INFORMATION_MESSAGE);
System.out.println(e.getMessage());
}
}
É, assim fica ruim mesmo.
Você pode escolher que coluna será editável se sobrescrevem também o método isCellEditable. Aí basta retornar false quando a coluna for a que você quer.
Mas recomendo fortemente que você leia os artigos que eu deixei ali em cima, e entenda como o JTable funciona. Depois, vc baixa a classe que eu deixei no link. Você vai ver, o código fica mais fácil, mais claro, mais modular e com menos duplicações de dados.