Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > JAVA
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-09-2010
Avatar de Negriz
Negriz Negriz is offline
Miembro
 
Registrado: feb 2008
Ubicación: Some were inside Colombia
Posts: 123
Poder: 10
Negriz Va por buen camino
Smile Limpiar antes de editar celda en Jtable

Hola amigos del club delphi, mi pregunta es algo rara de expresar asi que coemnzare con lo que quiero hacer.

En excel cuando comienzas a editar una celda a travez del teclado el valor que esta almacendo en ella se borra y da paso al nuevo valor, haciendo doble click el valor anterior no se modifica. En ambos casos el valor anterior regresa persionando la tecla escape.

En un JTable, en ambos casos el valor antiguo continua estando en la celda al momento de editarla.

Lo que quiero hacer es que al modificar la celda utilizando el teclado el valor que esta contenga se borre, pero en caso de que sea doble click lo mantenga.

He probado con el metodo isCellEditable() para que antes de retornar true en caso de que se pueda editar la celda, modificando el valor de la celda, pero este metodo es llamando cuando se selecciona la celda no cuando es editada.

Ademas probe con addPropertyChangeListener sbreescribiendo el metodo PropertyChange.

Código:
public static final String CELL_EDITOR_PROPERTY = "tableCellEditor";
private void PropertyChange(java.beans.PropertyChangeEvent evt) {
  if (CELL_EDITOR_PROPERTY.equals(evt.getPropertyName())) {
            //Se esta editando la celda
            int editingRow = ((javax.swing.JTable)evt.getSource()).getEditingRow();
            int editingColumn = ((javax.swing.JTable)evt.getSource()).getEditingColumn();
  }
}
Pero no logro modificar el valor para que este se borre antes de comenzar la edicion.
alguna sugerencia? muchas gracias.
__________________
Gracias!
Responder Con Cita
  #2  
Antiguo 11-09-2010
Avatar de Negriz
Negriz Negriz is offline
Miembro
 
Registrado: feb 2008
Ubicación: Some were inside Colombia
Posts: 123
Poder: 10
Negriz Va por buen camino
Talking Hola!

Bueno, despues de mucho buscar, lo he solucionado no es exactamente lo que queria, pero funciona mas o menos parecido ^.^, dejo mi solucion en caso de que a alguien le sirva.

1) Sobre-escribi el metodo getCellEditor de mi JTable.
Código:
public TableCellEditor getCellEditor(int row, int col) {
        final JTextField field = new JTextField(getValueAt(row,col).toString());
        final DefaultCellEditor edit = new DefaultCellEditor(field);
        edit.setClickCountToStart(1);
        field.addFocusListener(new FocusAdapter() {
            public void focusGained(FocusEvent e) {
                field.selectAll();//Con esto al solicitar el editor, el texto queda seleccionado
            }
            public void focusLost(FocusEvent e) {
                field.select(0,0);//De-selecciono el texto al perder el foco.
            }
        });
        return edit;
Con esto cada celda reacciona como un JTextField y al obtener el foco selecciona todo su texto.
Esto no solucionaba mi problema debido a que cuando comenzaba la edicion desde el teclado y no con doble click (o un solo click) el texto se adjuntaba al existente, asi que para solucionar esto agregue un listener a la JTable que escuchara el evento KeyRelased y solicitara el foco cuando se presionara una tecla, asi se simulaba el doble click del mosue.
Código:
tabla.addKeyListener(new java.awt.event.KeyAdapter() {
    public void keyReleased(java.awt.event.KeyEvent e) {
        if (!jTable1.isEditing() && jTable1.editCellAt(jTable1.getSelectedRow(), jTable1.getSelectedColumn())) {
            jTable1.getEditorComponent().requestFocusInWindow();
        }
    }
});
Aunque no es una solucion muy elegante, funciona. Solo me falta definir que si es VK_ESCAPE, cancele la edicion y si es VK_ENTER pare la edicion (bueno eso espero :P)...
Un saludo.
__________________
Gracias!
Responder Con Cita
  #3  
Antiguo 09-02-2017
xibx xibx is offline
Registrado
 
Registrado: feb 2017
Posts: 1
Poder: 0
xibx Va por buen camino
Ayuda

Hola,

Me gustaría q me ayudes a usar tu código del TableCellEditor please!!! Soy nueva en esto por favor ayudame!
Responder Con Cita
  #4  
Antiguo 10-02-2017
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 27.586
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Bienvenida a clubdelphi, como siempre aconsejamos a los nuevos, no olvides leer nuestra guía de estilo, gracias por tu colaboración
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Actualizar datos de un jTable? lince_36 JAVA 2 14-04-2010 09:24:20
como poner un jChekbox en un jTable rls JAVA 1 12-01-2007 17:52:54
como poner un jChekbox en una celda de un jTable rls Varios 1 10-12-2006 18:33:21
JTable Dudin JAVA 0 21-03-2005 19:52:13
Texto en celda del DBGrid antes del Post andre Conexión con bases de datos 6 16-06-2004 18:04:36


La franja horaria es GMT +2. Ahora son las 01:20:06.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi