java - tabla - ¿Puedo borrar texto en JTable cuando escriba?
refrescar jtable java (3)
¿Puedo hacer que textField en JTable
actúe como una celda en Excel ? Borre el texto al escribir pero puede editar al ingresar a la celda.
Creo que estas 2 operaciones irán al mismo evento. ¿Me equivoco?
Intento usar la keyPressed
pero nada funciona. TT-TT
Aquí está mi código
private JTable getTblMaster() {
if (tblMasterData == null) {
tblMasterData = new JTable() {
private static final long serialVersionUID = 1L;
public TableCellEditor getCellEditor(int row, int column) {
TableColumn tableColumn = getColumnModel()
.getColumn(column);
TableCellEditor editor = tableColumn.getCellEditor();
try {
if (editor == null) {
final JTextField text = new JTextField();
/*
text.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyPressed(KeyEvent e){
}
});
SwingUtilities.invokeLater(new Runnable(){
public void run(){
}
});
*/
editor = new DefaultCellEditor(text);
;
return editor;
}
} catch (Exception e) {
LogWriter.error(e);
}
return editor;
}
};
}
return tblMasterData;
}
¿Cualquier sugerencia?
mejor podría ser seleccionar todo el texto en la celda JTable
text.setText(text.getText())
text.selectAll
envolviendo en invokeLater()
gran solución Table Select All Editor by @camickr
Ohh! trashgod. Tu ejemplo me salvó la vida: D
Todo lo que necesitaba era el siguiente código y funcionó. ¡Cuan sencillo! Muchas muchas gracias.
private JTable getTblMaster() {
if (tblMasterData == null) {
tblMasterData = new JTable() {
public boolean editCellAt(int row, int column, EventObject e){
boolean result = super.editCellAt(row, column, e);
final Component editor = getEditorComponent();
if (editor == null || !(editor instanceof JTextComponent)) {
return result;
}
if (e instanceof KeyEvent) {
((JTextComponent) editor).selectAll();
}
return result;
} ....
Lo hice así. Primero estoy usando la clave de evento Relanzada y luego obtengo el número de fila y columna en el que estoy trabajando y luego establezco el valor en esa fila. El código es así.
private void purchases_TBLKeyReleased(java.awt.event.KeyEvent evt) {
int rowWorking = purchases_TBL.getSelectedRow();
int columnWorking = purchases_TBL.getSelectedColumn();
if(columnWorking==3){
model.setValueAt(null, rowWorking, columnWorking);
}
}
Esto hace que la tercera columna de la tabla sea nula tan pronto como enfoque me muevo hacia ese teclado usando.
Nota : El mismo fragmento de código se puede colocar en el evento MouseClicked .