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

Valores en una JTable

Estas en el tema de Valores en una JTable en el foro de Java en Foros del Web. Saludos. Tengo una tabla para capturar la toma física de inventarios pero resulta que cuando el usuario va a escribir los valores en la columna ...
  #1 (permalink)  
Antiguo 02/06/2013, 16:24
 
Fecha de Ingreso: mayo-2013
Ubicación: San José
Mensajes: 1
Antigüedad: 11 años
Puntos: 0
Pregunta Valores en una JTable

Saludos.
Tengo una tabla para capturar la toma física de inventarios pero resulta que cuando el usuario va a escribir los valores en la columna donde va la cantidad en vez de sobre escribir el valor que ya existe la, celda entra como en una especie de edición y lo que hace es agregar lo que el usuario escribe al final de lo que ya contiene la celda.
Mi pregunta es:
¿Cómo cambio este comportamiento? Lo que realmente necesito es que cuando el usuario escriba datos en la celda éstos reemplacen automáticamente el contenido de la ceda.
Aquí está un código de muestra:


public class Tabla extends javax.swing.JFrame {

/**
* Creates new form Tabla
*/
public Tabla() {
initComponents();
}


@SuppressWarnings("unchecked")
private void initComponents() {

jScrollPane1 = new javax.swing.JScrollPane();
jTable1 = new javax.swing.JTable();

setDefaultCloseOperation(javax.swing.WindowConstan ts.EXIT_ON_CLOSE);

jTable1.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{"0001", "Artículo 1", new Double(0.0)},
{"0002", "Artículo 2", new Double(0.0)},
{"0003", "Artículo 3", new Double(0.0)},
{"0004", "Artículo 4", new Double(0.0)}
},
new String [] {
"idArtículo", "Descripción", "Cantidad"
}
) {
Class[] types = new Class [] {
java.lang.Object.class, java.lang.Object.class, java.lang.Double.class
};
boolean[] canEdit = new boolean [] {
false, true, true
};

public Class getColumnClass(int columnIndex) {
return types [columnIndex];
}

public boolean isCellEditable(int rowIndex, int columnIndex) {
return canEdit [columnIndex];
}
});
jTable1.setColumnSelectionAllowed(true);
jScrollPane1.setViewportView(jTable1);
jTable1.getColumnModel().getSelectionModel().setSe lectionMode(javax.swing.ListSelectionModel.SINGLE_ SELECTION);

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout .Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(30, 30, 30)
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 452, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(51, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout .Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 99, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(58, Short.MAX_VALUE))
);

pack();
}

/**
* @param args the command line arguments
*/
public static void main(String args[]) {

try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClass Name());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(Tabla.class.get Name()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(Tabla.class.get Name()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(Tabla.class.get Name()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(Tabla.class.get Name()).log(java.util.logging.Level.SEVERE, null, ex);
}


/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Tabla().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTable jTable1;
// End of variables declaration
}


Mucha gracias de antemano.
  #2 (permalink)  
Antiguo 11/06/2013, 13:27
Avatar de fahs82  
Fecha de Ingreso: abril-2012
Ubicación: guadalajara
Mensajes: 139
Antigüedad: 12 años
Puntos: 12
Respuesta: Valores en una JTable

para estos casos te recomendaría cambiaras tu modelo de tabla de DefaultTableModel a un AbstractTableModel , puedes hacer mejores cosas y tener mas control sobre tu tabla
  #3 (permalink)  
Antiguo 11/06/2013, 13:33
Avatar de fahs82  
Fecha de Ingreso: abril-2012
Ubicación: guadalajara
Mensajes: 139
Antigüedad: 12 años
Puntos: 12
Respuesta: Valores en una JTable

te paso un ejemplo de un AbstractTableModel que yo implemento como una clase

espero te sirva

Código:
private static class ModeloTallas extends AbstractTableModel{
    String [] titulos = {"TALLA","CANTIDAD","BARCODE"};
    Vector data = new Vector();
   
       @Override
       public String getColumnName(int c){
       return titulos[c];     
       }
   
       
        @Override
        public int getRowCount() {
           return data.size();
        }

        @Override
        public int getColumnCount() {
           return titulos.length;
        }

        @Override
        public Object getValueAt(int row, int col) {
            return ((Vector) data.get(row)).get(col);
        }
        
        @Override
        public void setValueAt(Object value,int row,int col){
        ((Vector)data.get(row)).setElementAt(value,col);
        fireTableCellUpdated(row,col);
        }
        
        @Override
        public boolean isCellEditable(int row,int col){
        if(col == 1){
        return true;
        }
        else{return false;}
        
        }
                
        public void insertData(Object[] values){
        data.add(new Vector());
        for(int i =0;i < values.length;i++){
        ((Vector)data.get(data.size()-1)).add(values[i]);
        }
        fireTableDataChanged();
        }
        
    }

Etiquetas: jtable
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 04:30.