Adicionando lostFocus na celula do JTable

1 resposta
klarq

Galera,

Quero adicionar um focusListener no cellEditor para terminar a edição quando a célula perder o foco, pois quando o usuário digita na celula e clica em qualquer outro lugar que não seja a célua, a célula não “grava” a palavra digitada. Ela só grava se o usuário clicar na tabela após digitar!! :cry:

1 Resposta

klarq

Descobri...

Fiz assim:

Criei essa classe interna
//adiciona o editor da celula para que quando o usuário tirar o foco
	//da célula ela não perca o conteúdo
	public class MyTableCellEditor extends AbstractCellEditor implements TableCellEditor
	{
		// Essa Classe interna serve para Dizer quando a celula foi alterada e o seu respectivo valor
        JComponent component = new JTextField();
        
        public MyTableCellEditor()
        {
    		component.addFocusListener(
					new FocusListener()
					{
						public void focusGained(FocusEvent e) {
							// TODO Auto-generated method stub
							
						}
						public void focusLost(FocusEvent e) {
							// TODO Auto-generated method stub
							CadastroLivroBolsoPeriodicoView.this.minhaJTable.getModel().
								setValueAt(((JTextField)component).getText(),
								CadastroLivroBolsoPeriodicoView.this.minhaJTable.getSelectedRow(),
								CadastroLivroBolsoPeriodicoView.this.minhaJTable.getSelectedColumn());
						}
					}
			);

        }
        // This method is called when a cell value is edited by the user.
        public Component getTableCellEditorComponent(JTable table, Object value,
                boolean isSelected, int rowIndex, int vColIndex) 
        {
        	// 'value'é o valor contido na celula que esta na localizacao ((rowIndex, vColIndex)
        	
            if (isSelected) {
                // cell (and perhaps other cells) are selected
            }
    
            // Configure the component with the specified value
            ((JTextField)component).setText((String)value);
    
            // Return the configured component
            return component;
        }
    
        // This method is called when editing is completed.
        // It must return the new value to be stored in the cell.
        public Object getCellEditorValue() {
            return ((JTextField)component).getText();
        }
    }

e adicionei ela como editor das celulas da minha jtable

TableColumn col = minhaJTable.getColumnModel().getColumn(0);
    TableColumn col2 = munhaJTable.getColumnModel().getColumn(1);
    col.setCellEditor(new MyTableCellEditor());
    col2.setCellEditor(new MyTableCellEditor());

Dessa maneira quando o usuário sai do foco da célula ela tem o valor digitado.... hahahaha 8) :lol:

Criado 6 de junho de 2006
Ultima resposta 6 de jun. de 2006
Respostas 1
Participantes 1