The::Beastieux

Sangre de Bestia + Corazón de Pingüino | Un blog acerca de Linux, *BSD, Open Source, Software Libre, Programación …

Código Java – Desabilitar Edición de Celdas de JTable


Este es el Ejemplo #04 del Topic: Programación Gráfica en Java.

Aquí les detallo en forma de código el procedimiento para Habilitar/Deshabilitar la edición de celdas de un JTable.

...
        tblEjemplo=new JTable(dtmEjemplo){
        public boolean isCellEditable(int rowIndex, int vColIndex) {
            return false;
        }}; //return false: Desabilitar edición de celdas.
...

Código de Ejemplo:

package beastieux.gui;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author beastieux
 */
public class Ejm04_BloquearEdicionJTable extends JFrame{
    public Ejm04_BloquearEdicionJTable()
    {

        JTable tblEjemplo = new JTable();
        JScrollPane scpEjemplo= new JScrollPane();

        //Llenamos el modelo
        DefaultTableModel dtmEjemplo = new DefaultTableModel(getFilas(),
                                                             getColumnas());

        tblEjemplo=new JTable(dtmEjemplo){
        public boolean isCellEditable(int rowIndex, int vColIndex) {
            return false;
        }}; //return false: Desabilitar edición de celdas.

        tblEjemplo.setModel(dtmEjemplo);
        scpEjemplo.add(tblEjemplo);
        this.add(scpEjemplo);
        this.setSize(500, 200);
        scpEjemplo.setViewportView(tblEjemplo);

    }

    //Datos de las filas
    private Object[][] getFilas()
    {
         Object fila[][]=new Object[][] {
                            {"a1", "b1", "c1", "d1"},
                            {"a2", "b2", "c2", "d2"},
                            {"a3", "b3", "c3", "d3"}};
         return fila;
    }

    //Encabezados de la tabla
    private String[] getColumnas()
    {
          String columna[]=new String[]{"A","B","C", "D"};
          return columna;
    }

    public static void main(String args[]) {
        Ejm04_BloquearEdicionJTable obj = new Ejm04_BloquearEdicionJTable();
        obj.setVisible(true);
    }
}

8 Respuestas a “Código Java – Desabilitar Edición de Celdas de JTable

  1. abramf junio 8, 2014 en 9:23 pm

    Hola, tengo una interrogante, estoy tratando de habilitar y deshabilitar la edicion de una columna completamente apartir de un JToggleButton….
    pero no se como implementar este codigo….
    espero puedan ayudarme…..

    al momento de presionar el Boton se habilite toda una columna para su edicion, y al momento de volverlo a presionar se desactive su edicion…

  2. Carlos Eduardo Mina Toro agosto 4, 2013 en 9:50 pm

    no lo mismo poner jtable1.setEnabled(false );
    en el initComponents();

    • anonimo octubre 4, 2013 en 10:49 pm

      No, no es lo mismo. porque así como tu dices se bloquea totalmente el componente y así y que tal que si con un evento quisieras que al seleccionar una fila se carguen algunos campos.

      Si no necesitas este comportamiento es muy buena tu respuesta

  3. Anónimo diciembre 12, 2012 en 12:16 pm

    Muchas Gracias!

  4. Gerardo Lopez Ramirez noviembre 20, 2012 en 12:41 pm

    GRACIAS VIEJO ME SIRVIÓ DE MUCHO TU POST, FUE UNA FORMA SENCILLA Y RAPIDA DE VOLVER MIS CELDAS EDITABLE = FALSE, SALUDOS …

  5. Anónimo septiembre 5, 2012 en 7:42 am

    Gracias por la ayuda :D

  6. antonio febrero 8, 2011 en 7:17 pm

    Hola: solo para saber si me puedes ayuydar con una apli q ando desarrollando, tengo una tabla que es llenada desde un resultset de uan base de datos veo q tu obtienes los datos estaticamente osea siemopre son los miusmos, como podria hcer para que cuando los datos sean dinamicos unicamente la ultima de las columnas sea editable y las demas sean no editables con el metodo isCellEditable() ya que noi veo bien como podria implementarse, el metodo lo puse despues del constructor lo llame pero no funciona mi codigo es el siguiente:

    ejecutarAccion.crearConexion();
    String mostarDatos = “SELECT idoperacion, empresa, total, deducible, pendiente, estatus, agregar from operacion where ”
    + “fechaactual >= ‘” + fechaActual + ” 00:00:00′”
    + ” && fechaactual <= '" + fechaActual + " 23:59:59'" + ";";

    DefaultTableModel modelo = new DefaultTableModel();
    JTable tabla = new JTable(modelo);

    int contadorFilas = 0;
    int sumaDeducibles = 0;
    int sumaPendientes = 0;

    modelo.addColumn(“Operación Número”);
    modelo.addColumn(“Empresa”);
    modelo.addColumn(“Total”);
    modelo.addColumn(“Deducible”);
    modelo.addColumn(“Pendiente”);
    modelo.addColumn(“Estatus”);
    modelo.addColumn(“Recibir Deducible”);

    try {
    while (resultadoDatosParaTabla.next()) {
    contadorFilas = contadorFilas + 1;
    sumaDeducibles = sumaDeducibles + resultadoDatosParaTabla.getInt(4);
    sumaPendientes = sumaPendientes + resultadoDatosParaTabla.getInt(5);
    Object[] datos = new Object[6];
    for (int row = 0; row < 6; row++) {
    datos[row] = resultadoDatosParaTabla.getObject(row + 1);
    }
    modelo.addRow(datos);
    }
    jTable1.setModel(modelo);
    } catch (SQLException ex) {
    Logger.getLogger(CorteCaja.class.getName()).log(Level.SEVERE, null, ex);
    }

    por tu ayuda gracias

    • BeAsTiEuX febrero 8, 2011 en 11:22 pm

      Como stas antonio… Si te refieres a que solo la última columna deba ser editable has elegido bien en jugar con el metodo isCellEditable(), veo que tienes 7 columnas y como se empieza a contar desde el 0 la ultima columna es el 6, así que deberías implementar en la parte en que instancias el JTable el código como este:

      ...   
           JTable tabla =new JTable(modelo){
              public boolean isCellEditable(int rowIndex, int colIndex) {
                  if(colIndex==6)
                      return true;
                  else
                      return false;
              }};
      ...
      

      Espero haber resuelto tu duda con las columnas, saludos!!

No te quedes callado. Pregunta, Comenta, Comparte, Sígueme, Suscríbete, Déjame tu opinión... Soy Beastieux Zeroo...

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: