Bom dia galera,
Sou novo no java e estou fazendo um trabalho escolar, eu queria fazer o seguinte:
Pesquisando aqui no forum eu consegui fazer meu JSpinner ficar apenas com as horas ai inves de data e hora,
maaaaas ele não passa das 12 horas e o que eu precisava era que ele chegasse a mais de 100 horas…
o que eu preciso é entrar com o saldo do banco de horas de um funcionario, dai caso ele tenha mais de 12 não da certo…
To postando meu codigo ai pra vcs darem uma olhada, eu utilizo netbeans 7.1.2
No JSpinner ele aparece assim 000:00:00, mas não passa de 012:00:00
[code]spSaldoInicial = new javax.swing.JSpinner();
Date data = new Date();
SpinnerDateModel ModHora = new SpinnerDateModel(data,null,null,1);
spSaldoInicial.setFont(new java.awt.Font(“Tahoma”, 0, 14)); // NOI18N
spSaldoInicial.setModel(ModHora);
JSpinner.DateEditor ModSaldo = new JSpinner.DateEditor(spSaldoInicial, “hhh:mm:00”);
spSaldoInicial.setEditor(ModSaldo);
// Código adicionando o componente ao contêiner pai - não mostrado aqui
[/code]
Vlw
Infelizmente, DateEditor não aceita uma “quantidade de horas” e sim “um instante no tempo”.
(Não é aconselhável usar java.util.Date para representar “um intervalo de tempo”, apenas “um instante no tempo”. )
Portanto, mesmo acertando para “HH:mm:ss” (que permitiria usar até 23:59:59) você não consegue usar o DateEditor para entrar, por exemplo, “135 horas e 10 minutos”.
No seu caso é melhor ter 2 Spinners, um para as horas, e outro para os minutos (com um NumberEditor mesmo, sendo que o dos minutos vai de 0 até 59, e o das horas vai de 0 até 999).
então cara eu tinha feito isso, eu estava tentando fazer em um jspinner só, pra pode treina mais no java, eu tentei fazer como texto mais eu baguncei mais que tudo e nem tava rodando, tentei jogar uma mascara no jspinner e tbm não funcionou, tentei usar ao invez de DATE, o TIME, e nada tbm…
Se houver como, porque eu vo joga esse valor no banco de dados pra futuros calculos
Não se esqueça que os bancos de dados costumam ter campos do tipo “TIMESTAMP” , que representam um instante no tempo, não um intervalo de tempo.
Eu recomendaria guardar no banco como um simples número, em minutos. Por exemplo, 102:30 (102 horas e 30 minutos) seria guardado como 102 * 60 + 30 = 6150, e na hora de mostrar esse valor, você faz a conta de volta (6150 / 60 = 102, 6150 % 60 = 30).
Note a diferença de “intervalo de tempo” e “instante no tempo”.
Por exemplo, a dona Gisele Bündchen, que já está um pouco passadinha, nasceu no instante 20 de julho de 1980.
A sua idade é um intervalo de tempo, ou seja, 32 anos etc.
sim, mas no banco de dados o saldo inicial esta como TIME e inserindo e calculando direto no banco funciona colocando uma quantidade de tempo como 130:00:00 por exemplo.
Eu vou utilizar o TIMESTAMP pra marca entrada e saida e calcular a quantidade de tempo trabalhada.
mas acho que vou ter que me conformar com dois jspinners mesmo…
mas de qualquer forma, vlw pelo esclarecimento