Não quero permitir números de ponto flutuante (como Double), quero permitir Todos os Números Naturais e somente eles: [quote=“Douglas-Silva, post:1, topic:351012”]
Tem como fazer um JSpinner que vá de Zero a Infinito (e sem aceitar Números de Ponto-Flutuante)?
[/quote]
Eu encontrei outro Construtor que se propõe a permitir o que eu quero:
public SpinnerNumberModel(Number value,
Comparable minimum,
Comparable maximum,
Number stepSize)
O javadoc diz (negrito onde fala sobre como deixar em aberto os limites min/max):
Constructs a SpinnerModel that represents a closed sequence of numbers from minimum to maximum. The nextValue and previousValue methods compute elements of the sequence by adding or subtracting stepSize respectively. All of the parameters must be mutually Comparable, value and stepSize must be instances of Integer Long, Float, or Double.
The minimum and maximum parameters can be null to indicate that the range doesn’t have an upper or lower bound. If value or stepSize is null, or if both minimum and maximum are specified and minimum > maximum then an IllegalArgumentException is thrown. Similarly if (minimum <= value <= maximum) is false, an IllegalArgumentException is thrown.
Usando esse Construtor da forma abaixo o spinner vai de Zero à Long.MAX_VALUE (eu esperava que fosse até infinito, por passar null como limite máximo, mas por usar Long nos outros parâmetros ele assumiu o limite do Long mesmo):
spinner = new JSpinner(new SpinnerNumberModel(Long.valueOf(0), Long.valueOf(0), null, Long.valueOf(1)));
Esse código me serviu bem porque vou colocar o retorno do spinner em uma variável long.
Já o código sugerido pelo @campelo.m cria um JSpinner que aceita números de ponto flutuante maiores ou iguais a zero, e, parece aceitar números infinitos embora o comportamento seja estranho:

Veja no gif acima que quando se usa os botões de incremento/decremento funciona normal, mas quando eu começo a teclar “9” consecutivas vezes (eu teclei apenas “9”, nem “0” nem “1”) o valor acaba mudando sozinho após uma determinada quantidade de “Noves” (imagino que seja por causa de limitações do Double).
O código dele ficou assim:
spinner = new JSpinner(new SpinnerNumberModel(0, 0, Double.MAX_VALUE, 1));
this.spinner.setEditor(new JSpinner.NumberEditor(this.spinner, "#")); //O que é que essa linha faz?
@addller usar Double.POSITIVE_INFINITY no lugar de Double.MAX_VALUE sem a 2ª linha pareceu dar um resultado semelhante.
Conclusão Atual:
resolvi o meu problema com o código spinner = new JSpinner(new SpinnerNumberModel(Long.valueOf(0), Long.valueOf(0), null, Long.valueOf(1)));, mas esse código não resolve o problema da pergunta que na verdade é “como criar um JSpinner que aceita todos os Numeros Naturais e somente os Números Naturais?” (Não deve ter limite máximo [indo de zero a infinito], e não deve aceitar números com ponto-flutuante nem números negativos).