java - resultado - texto de fondo en jtextfield
Cómo centrarse en JTextField dentro de una tabla (3)
¿Has probado editcellat sin el requestfocus?
también asegúrese de anular / implemenet para devolver verdadero
/**
* Returns true.
* @param anEvent an event object
* @return true
*/
public boolean shouldSelectCell(EventObject anEvent) {
return true;
}
Estoy escribiendo una función de búsqueda y reemplazo en un tipo de programa de hoja de cálculo. Lo que quiero es que si busca una cadena, el programa muestre una tabla con el elemento que se ha encontrado.
Hasta ahora todo bien, pero no puedo obtener el elemento para obtener el foco, con el cursor en él para que pueda comenzar a escribir de inmediato.
Estoy usando una JTable
personalizada y también un TableCellEditor
personalizado. Los siguientes trucos no parecen funcionar: (dentro del TableCellEditor
personalizado):
SwingUtilities.invokeLater(new Runnable() {
public void run() {
my_textfield.requestFocus();
}
});
o:
my_jtable.editCellAt(0, 3);
my_jtable.requestFocus();
o
my_jtable.getEditorComponent().requestFocusInWindow();
¿Me estoy perdiendo de algo? ¿Hay una buena descripción (buen diagrama de flujo) que muestre cómo ocurren los eventos? ¿O código de ejemplo que podría hacer algo similar?
Compruebe si ha habilitado la selección en su instancia de tabla personalizada como a continuación:
table.setColumnSelectionAllowed(true);
table.setRowSelectionAllowed(true);
Con esto establecido, generalmente una llamada a table.editCellAt(row, col);
comienza a editar Ejemplo:
JTable myTable = new JTable(rows, cols);
myTable.setColumnSelectionAllowed(true);
myTable.setRowSelectionAllowed(true);
y en otro lugar ... donde se necesita editar,
boolean wasEditStarted = table.editCellAt(row, col);
if (wasEditStarted) {
table.changeSelection(row, col, false, false);
}
Con un poco de google encontré un tema en el foro: programáticamente comencé a editar una celda en una tabla JTable con la siguiente idea:
(en una subclase de JTable)
editCellAt(row,column);
requestFocus();
DefaultCellEditor ed = (DefaultCellEditor)
getCellEditor(row,column);
ed.shouldSelectCell(new ListSelectionEvent(this,row,row,true));
¿Funcionaría?