Algumas dúvidas sobre jTable?

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.

Ok, valeu pelas dicas.