setvalueat setmodel example autoresizemode java swing jtable

example - setmodel java



Editor de celda de probabilidad (2)

Tengo Probability clase. Quiero usar un renderizador personalizado para eso (ya hecho) y el editor como doble. Pero ni siquiera puedo encontrar el editor doble (solo el Número), así que realmente no tengo idea de cómo debo implementarlo. La pregunta es: ¿cómo debería implementarlo?

* diferencia del editor doble: debería permitir solo números en el rango 0..100


..numera el rango 0..100

Use un JSpinner como TableCellEditor .


¿Qué pasa con un JFormattedTextField con AbstractFormatter haciendo la conversión, y un DocumentFilter para rechazar cualquier cosa que no sea un valor porcentual válido?

Aquí hay un ejemplo de DocumentFilter (no probado, de leer 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); } }

Desearía anular remove() y replace manera similar.

(Supongo que podría haber una implementación más eficiente, pero supongo que será lo suficientemente rápida para la velocidad de tipeo de la mayoría de los usuarios).

Este filtro sería devuelto por el método getDocumentFilter de su implementación AbstractFormatter.