¿Qué tal un JFormattedTextField
con AbstractFormatter haciendo la conversión, y un DocumentFilter para rechazar cualquier cosa que no sea un valor porcentual válido?
Aquí es un ejemplo DocumentFilter (no probado, de la lectura de la documentación):
class PercentageFilter extends DocumentFilter {
insertString(FilterBypass bp, int offset, String adding, AttributeSet attrs) {
Document doc = bp.getDocument();
String text = doc.getText(0, offset) + adding + doc.getText(offset, doc.getLength()-offset);
try {
double d = Double.parseDouble(text);
if(d < 0 || 100 < d) {
// to big or too small number
return;
}
}
catch(NumberFormatException ex) {
// invalid number, do nothing.
return;
}
// if we come to this point, the entered number
// is a valid value => really insert it into the document.
bp.insertString(offset, adding, attrs);
}
}
Usted quiere anular remove()
y replace
de manera similar.
(supongo que podría haber una implementación más eficiente, pero esto será lo suficientemente rápido para la velocidad de escritura de la mayoría de usuarios, supongo.)
Este filtro se devolvería a su método de aplicación AbstractFormatter getDocumentFilter
.
Primero, ¿podría explicar qué es un "editor doble"? –
@Hovercraft Full Of Eels, es 'TableCellEditor' que permite el ingreso de dobles en las celdas de jtable –
lo obtuve. Interesante pregunta, gracias. –