Dar 2 clique par alterar CellEditor

2 respostas
java
L

Tenho esse código que utilizo para aceitar apenas números na célula, mas quando vou alterar ele, ele altera com apenas 1 clique na célula e eu gostaria que fosse com 2 cliques. Alguém pode me ajudar?

import java.awt.Component;
import javax.swing.AbstractCellEditor;
import javax.swing.JComponent;
import javax.swing.JOptionPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.TableCellEditor;

class MyTableCellEditor extends AbstractCellEditor
        implements TableCellEditor {

    JComponent component = new JTextField();

    public boolean stopCellEditing() {
        
        String s = (String) getCellEditorValue();
        boolean valido = true;
        for (int i = 0; i < s.length(); i++) {
            Character caractere = s.charAt(i);
            if (!Character.isDigit(caractere)) {

                    valido = false;
                    break;
                
            }
        }
        if (!valido) {
            JOptionPane.showMessageDialog(null,
                    "Utilize apenas valores numericos de 1 a 10");
            return false;
        }
        return super.stopCellEditing();

    }

    public Component getTableCellEditorComponent(
            JTable table, Object value,
            boolean isSelected, int rowIndex, int vColIndex) {
        
        if (isSelected) {
            
            //
        }
        ((JTextField) component).setText((String) value);
        
        return component;
        
    }

    public Object getCellEditorValue() {
        return ((JTextField) component).getText();

        
    }
}

eu pesquisei e vi que tem jeito com o setClickCountToStart(2);, mas da erro onde quer q eu coloque

2 Respostas

darlan_machado

Qual erro? Como colocou?

L

Olá Darlan,

Resolvi da seguinte maneira

int clickCountToStart = 2;

@Override
public boolean isCellEditable(EventObject anEvent) {
    if (anEvent instanceof MouseEvent) {
        return ((MouseEvent)anEvent).getClickCount() >= clickCountToStart;
    }
    return true;
}
Criado 8 de fevereiro de 2018
Ultima resposta 8 de fev. de 2018
Respostas 2
Participantes 2