FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
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(); } } alguna sugerencia? muchas gracias.
__________________
Gracias! |
#2
|
||||
|
||||
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; 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(); } } }); Un saludo.
__________________
Gracias! |
#3
|
|||
|
|||
Ayuda
Hola,
Me gustaría q me ayudes a usar tu código del TableCellEditor please!!! Soy nueva en esto por favor ayudame! |
#4
|
||||
|
||||
Bienvenida a clubdelphi, como siempre aconsejamos a los nuevos, no olvides leer nuestra guía de estilo, gracias por tu colaboración
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#5
|
|||
|
|||
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? |
#6
|
||||
|
||||
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 .... |
|
|
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 |
|