[RESOLVIDO]Limitar JSpinner em um evento

1 resposta
raphaellaccb

Olá pessoal!

Estou desenvolvendo um programa para montar uma sala de aula.
O usuário informa o comprimento, a largura e a altura em três JTextField e com o valor do comprimento e largura eu quero limitar o valor máximo de carteiras em um JSpinner.
Adicionei um evento ChangeListener no Spinner.

jSpinner1.setModel(new javax.swing.SpinnerNumberModel(Integer.valueOf(0), Integer.valueOf(0), null, Integer.valueOf(1)));
        jSpinner1.setAutoscrolls(true);
        jSpinner1.setOpaque(false);
        jSpinner1.addChangeListener(new javax.swing.event.ChangeListener() {
            public void stateChanged(javax.swing.event.ChangeEvent evt) {
                jSpinner1StateChanged(evt);
            }
        });

entretanto na hora que vou trata-lo ele trava o JSpinner no valor inicial

private void jSpinner1StateChanged(javax.swing.event.ChangeEvent evt) {
    // digitando um numero ou clicando para cima
    int comprimento = Integer.parseInt(jTextField1.getText());
    int largura = Integer.parseInt(jTextField2.getText());
    
    jSpinner1.setModel(new javax.swing.SpinnerNumberModel(0, 0, comprimento*largura, 1));
    jSpinner1.removeChangeListener(null); //tentei desabilitar o ChangeListener
    jSpinner1.setAutoscrolls(true);
    jSpinner1.setOpaque(false);
}

alguém pode me ajudar .. por favor!? :oops:

Att.

1 Resposta

raphaellaccb

e ai pessoal!
Fiz de um jeito que deu certo. Na verdade foi bem simples. :lol:

private void jSpinner1StateChanged(javax.swing.event.ChangeEvent evt) {                                       
    //digitando um numero ou clicando para cima
    int comprimento = Integer.parseInt(jTextField1.getText());
    int largura = Integer.parseInt(jTextField2.getText());

    if(Integer.valueOf(String.valueOf(jSpinner1.getValue())) > (comprimento*largura))
        jSpinner1.setValue(largura*comprimento);
}

Vlw

Criado 24 de novembro de 2011
Ultima resposta 25 de nov. de 2011
Respostas 1
Participantes 1