Problema com JSpinner para Hora

0 respostas
K

bom, eu to apanhando pra um JSpinner… eu nao consigo fazer ele aceitar somente numeros usando SpinnerNumberModel, nem Usando o Date pq dai o editor dexa colocar letra, numero, qualquer coisa. mas na verdade eu quero que ele aceite SÓ NUMEROS,mas ao mesmo tempo funcione como um SpinnerNumberModel.

eu tentei fazer minha classe JSpinner… mas nao esta funcionado os botoes de mais e menos, alem de que eu queria aceitar valores entre 0 e 23 ou 0 e 59.

segue o trecho da classe que extend JSpinner que eu fiz e que nao da certo:

class TimeSpinner extends JSpinner implements ChangeListener, SpinnerModel {
        private JFormattedTextField edit = new JFormattedTextField(new MaskFormatter("##"));
        private int maxValue = 59;

        public TimeSpinner(int min,int max,int selected) throws ParseException {
            setEditor(edit);
            setMaxValue(max);
            edit.setValue(selected);
        }

        public JFormattedTextField getEdit() {
            return edit;
        }

        public void setEdit(JFormattedTextField edit) {
            this.edit = edit;
        }

        public int getMaxValue() {
            return maxValue;
        }

        public void setMaxValue(int maxValue) {
            this.maxValue = maxValue;
        }
        
        @Override
        public Object getNextValue() {
            Integer next = Integer.parseInt(super.getNextValue().toString());
            if (next>getMaxValue())
                return 0;
            return next;
        }

        @Override
        public Object getPreviousValue() {
            Integer next = Integer.parseInt(super.getNextValue().toString());
            if (next<0)
                return getMaxValue();
            return next;
        }

        @Override
        public void setValue(Object value) throws IllegalArgumentException {
            int i = Integer.parseInt(value.toString());
            if (i<0 || i>23) {
                throw new IllegalArgumentException("Valor deve ser entre 0 e 23");
            }
            super.setValue(value);
        }
        public void stateChanged(ChangeEvent e) {
            System.out.println("mamae");
        }
    }

eu to apanhando que nem cachorro pra isso =(

grato desde ja.

Criado 5 de fevereiro de 2009
Respostas 0
Participantes 1