Local variable is accessed from within inner class

3 respostas
C

Ta dando esse erro: "local variable table is accessed from within inner class; needs to be declared final". Na linha 43. Alguém sabe o q pode ta acontecendo??

public void setTabela(javax.swing.JTable table){
        javax.swing.table.DefaultTableModel model = (javax.swing.table.DefaultTableModel)table.getModel();    
        model.addColumn("Item", new Object[]{"","","","","","","","",""});
        model.addColumn("Especificação", new Object[]{"","","","","","","","",""}); 
        model.addColumn("Unid.", new Object[]{"","","","","","","","",""});
        model.addColumn("Quant.", new Object[]{"","","","","","","","",""}); 
        model.addColumn("Pço. Unit.", new Object[]{"","","","","","","","","",});
        model.addColumn("Pço. Total", new Object[]{"","","","","","","","","",}); 
        table.getColumnModel().getColumn(0).setPreferredWidth(1); 
        table.getColumnModel().getColumn(1).setPreferredWidth(400); 
        table.getColumnModel().getColumn(2).setPreferredWidth(1); 
        table.getColumnModel().getColumn(3).setPreferredWidth(1); 
        table.getColumnModel().getColumn(4).setPreferredWidth(1); 
        table.getColumnModel().getColumn(5).setPreferredWidth(70); 
    
        combo = new javax.swing.JComboBox();
        combo2 = new javax.swing.JComboBox();
        lista = new java.util.ArrayList();
        lista2 = new java.util.ArrayList();
        lista = con.listaItem();
        lista2 = con.listaServicos();
            int n = lista.size(); int m = lista2.size();
            for(int i=0; i<n; i++){combo.addItem(lista.get(i));}
            for(int i=0; i<m; i++){combo2.addItem(lista2.get(i));}
       
        javax.swing.table.TableColumn col = table.getColumnModel().getColumn(0);
        javax.swing.table.TableColumn col2 = table.getColumnModel().getColumn(1);
        col.setCellEditor(new javax.swing.DefaultCellEditor(combo));    
        col2.setCellEditor(new javax.swing.DefaultCellEditor(combo2));    
        javax.swing.table.DefaultTableCellRenderer renderer = new javax.swing.table.DefaultTableCellRenderer();
        javax.swing.table.DefaultTableCellRenderer renderer2 = new javax.swing.table.DefaultTableCellRenderer();
        renderer.setToolTipText("Click for combo box");
        renderer2.setToolTipText("Click for combo box");
        col.setCellRenderer(renderer);
        col2.setCellRenderer(renderer2);
        combo.addItemListener(
                new java.awt.event.ItemListener()
        {
           public void itemStateChanged(java.awt.event.ItemEvent evt){
               if(evt.getStateChange()== java.awt.event.ItemEvent.SELECTED)
               { 
                   String item = (String)lista.get(combo.getSelectedIndex());  
                   table.setValueAt(con.ItemServico(item),table.getSelectedRow(),table.getSelectedColumn());
               }
           }
        }
                );
    }

3 Respostas

V

Está acontecendo o que ele está falando, ué.

Sua variável local, para ser usada numa inner class, tem que ser declarada com o modificador final.

public void setTabela(final javax.swing.JTable table){

C

não sou expert em java ainda, paciência!!!
Mas valeu pela dica!

V

carllacj:
não sou expert em java ainda, paciência!!!
Mas valeu pela dica!

Eu não estava nervoso e nem te recriminando. Só fui direto (talvez até demais).
:wink:

Criado 9 de abril de 2008
Ultima resposta 10 de abr. de 2008
Respostas 3
Participantes 2