Combinando JXTable con RXTable

Problem

Quiero las capacidades de JXTable con el comportamiento "seleccionar todo en edición" de RXTable. Hacer una anulación simple estaría bien, pero la función de doble clic de RXTable no funciona con JXTable. Cuando se usa el modo Acción de botón, está bien, pero cuando se usa F2 o un doble clic en algo en JXTable entra en conflicto con RXTable y elimino la selección, así que me quedo con el comportamiento predeterminado. ¿Es por el GenericEditor que usa internamente o es algo más?

¿Cómo puedo hacer que JXTable seleccione todo en F2 o haga doble clic en editar?

EDIT: Parece que esto solo ocurre cuando el modelo tiene la columna definida para el tipo Integer. Funciona como se esperaba cuando se define para una columna String u Object.

Solució

Gracias a la corrección de kleopatra Pude alterar el método selectAll para que maneje JFormattedTextFields y todos los casos de edición. Como el código original funcionaba con el tipo para editar, solo utilicé la corrección para otros casos. Aquí es con lo que terminé.

Replace selectAll en RXTable con lo siguiente:

/*
 * Select the text when editing on a text related cell is started
 */
private void selectAll(EventObject e)
{
    final Component editor = getEditorComponent();

    if (editor == null
        || ! (editor instanceof JTextComponent 
                || editor instanceof JFormattedTextField))
        return;

    if (e == null)
    {
        ((JTextComponent)editor).selectAll();
        return;
    }

    //  Typing in the cell was used to activate the editor

    if (e instanceof KeyEvent && isSelectAllForKeyEvent)
    {
        ((JTextComponent)editor).selectAll();
        return;
    }

    // If the cell we are dealing with is a JFormattedTextField
    //    force to commit, and invoke selectall

    if (editor instanceof JFormattedTextField) {
           invokeSelectAll((JFormattedTextField)editor);
           return;
    }

    //  F2 was used to activate the editor

    if (e instanceof ActionEvent && isSelectAllForActionEvent)
    {
        ((JTextComponent)editor).selectAll();
        return;
    }

    //  A mouse click was used to activate the editor.
    //  Generally this is a double click and the second mouse click is
    //  passed to the editor which would remove the text selection unless
    //  we use the invokeLater()

    if (e instanceof MouseEvent && isSelectAllForMouseEvent)
    {
        SwingUtilities.invokeLater(new Runnable()
        {
            public void run()
            {
                ((JTextComponent)editor).selectAll();
            }
        });
    }
}

private void invokeSelectAll(final JFormattedTextField editor) {
    // old trick: force to commit, and invoke selectall
    editor.setText(editor.getText());
    SwingUtilities.invokeLater(new Runnable() {
        public void run() {
            editor.selectAll();
        }
    });
}

Respuestas a la pregunta(1)

Su respuesta a la pregunta