JTable (SetValueAt) alguem ja tentou isso?[RESOLVIDO!]

6 respostas
banger

bom dia,

bom tentei utilizar o metodo setValueAt da JTable para tentar setar os valires de das celulas de uma coluna, mas o metodo naum deu certo:

public void setCelulas(JTable table, boolean[] ioStats) {
String A = "Ativado";
String D = "Desativado";

    for(int i = 0; i < table.getModel().getRowCount(); i++) {

           if (ioStats[i] == true) {
            table.getModel().setValueAt(A, 0, 0);
        } else{
            table.getModel().setValueAt(D, 0, 0);

        }
       }

}

dei uma lida e vi que tanto a JTable quanto o table model utiliza esse metodo,

de qual deles devo usar? alguem jah tentou fazer isso?

6 Respostas

E

Você deve criar seu próprio table model, ou então usar um pronto como o do Glazed Lists, (http://publicobject.com/glazedlists/ ) e então mudar os dados do table model.
Não se pode mudar os dados diretamente na JTable - você não irá ver as modificações.

EDIT - não vi que você mudou os valores no table model. Então o problema é mais embaixo; mesmo mudando o table model o JTable ainda assim não mostra diretamente as modificações. Usando o EventTableModel do Glazed Lists, você irá ver as modificações serem propagadas instantaneamente na JTable, o que não ocorre “naturalmente” com um simples TableModel, que ainda exige mais algumas coisas para funcionar “sozinho”.

Marky.Vasconcelos

Voce pode ver como implementar seu TableModel seguindo esse link.
http://www.guj.com.br/posts/list/15/199067.java#1001295

Ou tem esse outro pronto também.

banger

opah galera vlw,

e que tipo eunaum preciso nescessariamente de uma modelo especifico de tabela, eu dei uma lida no defaulttable model e ele tem tudo que eu preciso sem precisar montar um model, jah tinha lido anteriormente estes topicos e alois muito obrigado por me enviarem.

eu consegui setar uma atualização nas celulas de uma coluna:

aqui vai um pouco do que fiz para dar certo caso alguem tenha uma duvida parecida, e sem utilizar um modelo proprio mas aconselho muito que façam um!!!

public void setCelulas(boolean[] ioStats) {
String A = "Ativado";
String D = "Desativado";

    for(int i = 0; i < modelo.getRowCount(); i++) {

           if (ioStats[i] == true) {
            modelo.setValueAt(A, i, IOSTATSCOLUNM);
        } else{
            modelo.setValueAt(D, i, IOSTATSCOLUNM);

        }

       }

TSaida.setModel(modelo);

}

/* run para a troca altomatica!*/

public void run() {

       
       
       
       

        //troca o texto do JLabel
       while(true) {

           setCelulas(ioStatsS);
           try {

               
                   Thread.sleep(250);


           switch(SendMsg) {

               case mIdent :
                   
                       WriteToPortI();
                   

                  
                   break;

               case mSaidaS :
                                          
                       WriteToPortS();                                                      
                   break;

               case mSaidaW :

                   WriteToPortW(ioStatsW);                   
                   break;

               case mEntrada :
                  
                       SendMsg = FrameMsg.mEntrada;
                       WriteToPortE();                                                                            
                       break;
                   
               default :
                   
                   SendMsg = FrameMsg.mIdent;
           }

       } catch (InterruptedException ex) {
                   Logger.getLogger(AeSManutenção.class.getName()).log(Level.SEVERE, null, ex);               
               }

       }
   }

vlw gente vcs me ajudaram bastante!!!

banger

soh uma pergunta antes de colocar o forum como resolvido

tem como fazer evendo de seleção de celula ter um evento parecido de botão!!!

por exemplo eu tenho um botão assim:

private void b31ActionPerformed(java.awt.event.ActionEvent evt) {                                    
        toggleStats(30, ioStatsW);
        SendMsg = FrameMsg.mSaidaW;
}

tem como eu fazer uma seleção de celula ser tpw um action pra executar estes metodos quando eu clico na celula da table?

E

Sempre veja isto aqui,
http://java.sun.com/docs/books/tutorial/uiswing/components/table.html
e procure receitas de bolo aqui,
http://www.exampledepot.com/search/luceneapi_node/jtable

No seu caso, você precisa aprender a usar o SelectionModel.

banger

ok vlw mesmo!!!

vou finalizar o topico agora

brigado galera!!

Criado 25 de junho de 2010
Ultima resposta 25 de jun. de 2010
Respostas 6
Participantes 3