Pregunta

Me gustaría hacer una jTable en la que cuando el usuario selecciona una celda no editable, debería cambiar el enfoque a la siguiente celda editable automáticamente. Importante: el usuario puede seleccionar una celda mediante el teclado (pestaña o flecha) y haciendo clic con el mouse. ¿¿Es posible?? ¿Cómo hacerlo?

¿Fue útil?

Solución

Este enlace detalla Programmáticamente haciendo selecciones en un componente JTable ; Tendrías que tener activadas las alarmas del ratón / etc para solucionar esto.

Otros consejos

Tabulación de tablas muestra cómo puede hacerlo con el teclado.

Nunca lo he probado, pero deberías poder usar un MouseListener para invocar la misma acción cuando haces clic en una celda.

Acabo de hacer una prueba rápida para MouseListener y parece que funciona bien:

JTable table = new JTable(...);
final EditableCellFocusAction action = 
    new EditableCellFocusAction(table, KeyStroke.getKeyStroke("TAB"));

MouseListener ml = new MouseAdapter()
{
    public void mouseReleased(MouseEvent e)
    {
        JTable table = (JTable)e.getSource();
        int row = table.rowAtPoint(e.getPoint());
        int column = table.columnAtPoint(e.getPoint());

        if (! table.isCellEditable(row, column))
        {
                ActionEvent event = new ActionEvent(
                    table,
                    ActionEvent.ACTION_PERFORMED,
                    "");
                action.actionPerformed(event);
        }
    }
};
table.addMouseListener(ml);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top