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 Temas de Hoy

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: 17
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: 17
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
NULL
 
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: 32.264
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
  #5  
Antiguo 24-05-2018
AlexSC AlexSC is offline
Registrado
NULL
 
Registrado: may 2018
Posts: 1
Poder: 0
AlexSC Va por buen camino
Ayuda

Oye y como sobreescribiste el metodo getCellEditor?

en que clase lo sobreescribiste??

o donde lo estas utilizando? ya que al hacer el keyevent no miro que hagas referencia del getCellEditor?

y si tu dices que lo agregaste a la tabla.... tu creaste la tabla desde 0 por eso le agregaste ese elemento?
o
tu jalaste una tabla del swing y le agregaste esa programacion del getCellEditor? y si lo hiciste asi como se lo agregaste?
Responder Con Cita
  #6  
Antiguo 24-05-2018
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola AlexSC.

La última vez que Negriz anduvo por estos foros fué allá, por el 2010... Te aconsejo formular tu problema en una nueva consulta.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
Respuesta



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 21:45:00.


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