Foros del Web » Programación para mayores de 30 ;) » Java »

jtable con AbstractTableModel

Estas en el tema de jtable con AbstractTableModel en el foro de Java en Foros del Web. tengo una tabla tipo AbstractTableModel donde voy adicionando productos en el inicio del formulario estoy colocando codigo para trabajar con modellistener, el problema es que ...
  #1 (permalink)  
Antiguo 13/04/2016, 08:18
 
Fecha de Ingreso: agosto-2010
Mensajes: 127
Antigüedad: 13 años, 8 meses
Puntos: 1
jtable con AbstractTableModel

tengo una tabla tipo AbstractTableModel donde voy adicionando productos en el inicio del formulario estoy colocando codigo para trabajar con modellistener, el problema es que cuando recorro las filas de las tablas en la columna siempre me aparece -1 ,pero cualdo mi tabla de de tipo DefaultTableModel si toma el valor de las columnas el codigo es el siguiente
Código:
this.jtblDetalle.getModel().addTableModelListener(new TableModelListener() {

            @Override
            public void tableChanged(TableModelEvent e) {
                
                if ( e.getType() == TableModelEvent.UPDATE ) {
                    TableModel modelo = ( (TableModel) ( e.getSource() ) );            
                    int fila = e.getFirstRow();
                    int columna = e.getColumn();
               System.out.println("fila "+fila+" columna "+columna);
 
                    
                }
             
            }
        });
el codigo de la definicion de tabla es el siguiente
Código:
public class DetalleTableModel extends  AbstractTableModel {
    
    Validator v;
    public boolean opcion = false;
    private ArrayList<ArrayDetalle> listaDetalle;
    private Class[] tipoColumnas = {Object.class, JTextField.class, java.lang.Integer.class, java.lang.Double.class, java.lang.Double.class};
    
    private String[] columnas = {"Código", "Descripción","Cantidad", "Valor Unit.", "Valor Total"};
    private boolean[] editables={true,true,true,false,false};

    public FacturaTableModel() {
        this.listaDetalle = new ArrayList<ArrayDetalle>();
    }

    public void addFacturaDetalle(ArrayDetalle objDetalle) {
        this.listaDetalle.add(objDetalle);
        fireTableDataChanged();
    }

    public void removerFacturaDetalle(int rowIndex) {
        this.listaDetalle.remove(rowIndex);
        fireTableDataChanged();
    }

    @Override
    public int getRowCount() {
        return this.listaDetalle.size();
    }
 
    @Override
    public int getColumnCount() {
        return columnas.length;
    }

    @Override
    public Object getValueAt(int rowIndex, int columnIndex) {

        switch (columnIndex) {

            case 0:
                return this.listaDetalle.get(rowIndex).getCodProducto();
            case 1:
                return this.listaDetalle.get(rowIndex).getDesProducto();
            case 2:
                return this.listaDetalle.get(rowIndex).getCantidad();
            case 3:
                return this.listaDetalle.get(rowIndex).getPrecio();
            case 4:
                return this.listaDetalle.get(rowIndex).getPrecioTotal();
            default:
                return this.listaDetalle.get(rowIndex);
        }
    }

    @Override
    public void setValueAt(Object value, int rowIndex, int columnIndex) {
        super.setValueAt(value, rowIndex, columnIndex);
        switch (columnIndex) {
            case 0:
                this.listaDetalle.get(rowIndex).setCodProducto(String.valueOf(value));
                break;

            case 1:
                this.listaDetalle.get(rowIndex).setDesProducto(String.valueOf(value));
                break;
            case 2:
                this.listaDetalle.get(rowIndex).setCantidad(Integer.parseInt(value.toString()));
               
                
                break;
            case 3:
                this.listaDetalle.get(rowIndex).setPrecio(Double.parseDouble(value.toString()));
                break;
            case 4:
                  this.listaDetalle.get(rowIndex).setPrecioTotal(Double.parseDouble(value.toString()));
                  break;
            
        }
        
        fireTableDataChanged(); 


    } 

    @Override
    public String getColumnName(int columnIndex) {
        return this.columnas[columnIndex];
    }

    @Override
 
    public Class<?> getColumnClass(int columnIndex) {
        return tipoColumnas[columnIndex];
    }
    @Override
    public boolean isCellEditable(int rowIndex, int columnIndex) {
 
         return editables[columnIndex];
    }
    
    public TableCellEditor getCellEditor(int rowIndex,int columnIndex) {
        final JTextField field = new JTextField(getValueAt(rowIndex,columnIndex).toString());
        final DefaultCellEditor edit = new DefaultCellEditor(field);
        edit.setClickCountToStart(2);
        field.addFocusListener(new FocusAdapter() {
            @Override
            public void focusGained(FocusEvent e) {
                field.selectAll();//Con esto al solicitar el editor, el texto queda seleccionado
                
            }
            @Override
            public void focusLost(FocusEvent e) {
                field.select(0,0);//De-selecciono el texto al perder el foco.
                 
            }
        });
        
        return edit;
    }
   
   
    
}
como puedo hacer para que desde AbstractTableModel pueda seleccionar bien el numero de columna

Etiquetas: jar, jtable, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:54.