Captando a hora do sistema no modelo hh:mm:ss  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
tiagosarno
Debugger
[Avatar]

Membro desde: 17/02/2007 10:07:03
Mensagens: 66
Localização: Goiânia
Offline

Pessoal,
sou bem iniciante na linguagem ainda e gostaria como posso fazer para criar um método que mostra a hora do sistema dinâmicamente como em java-script onde os segundos vão passando: tipo 22:45:36

Alguém tem este método ou sabe como fazer? Desde já agradeço ...

Tiago [ HcK ]

Tiago Rocha Sarno - Programador
http://tiagosarno.wordpress.com
[Email] [WWW]
SrFabio
JavaBaby
[Avatar]

Membro desde: 18/02/2007 13:50:41
Mensagens: 99
Localização: São Miguel, Açores (Portugal)
Offline

Podes fazer isso instanciando um objecto da classe java.util.Date;

Exemplo:

Ele irá mostrar a data no momento da instanciação;

Se quiseres dinamismo terás de usar Threads, ou crias um ciclo infinito em que em cada iteração ele mostra a data.
[MSN]
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline

Isso mesmo. Primeiro você instancia um Date:



Depois, gere a String formatada para esse date. Há duas maneiras de se fazer isso. A primeira é usando um DateFormat. A segunda é usando o método String.format() ou equivalente. Vou mostrar aqui com o DateFormat:



Finalmente, imprima essa data formatada continuamente numa nova thread. No run() de sua thread, faça:

DateFormat formato = new SimpleDateFormat("HH:mm:ss.SSS");



[WWW]
tiagosarno
Debugger
[Avatar]

Membro desde: 17/02/2007 10:07:03
Mensagens: 66
Localização: Goiânia
Offline

Vini entendi o que deve ser feito,
sei o que são threads mas somente o que aprendi em S.O teórico sabe, não tenho a mínima idéia de como criar uma thread no JAVA. Estou utilizando a IDE NetBeans 5.0, ou esta thread é apenas um arquivo java class comum?


Tiago Rocha Sarno - Programador
http://tiagosarno.wordpress.com
[Email] [WWW]
tiagosarno
Debugger
[Avatar]

Membro desde: 17/02/2007 10:07:03
Mensagens: 66
Localização: Goiânia
Offline

Tentei colocar o código no mais de meu sistema, segue o código:


Tiago Rocha Sarno - Programador
http://tiagosarno.wordpress.com
[Email] [WWW]
nilsoncastro
Thread.start()

Membro desde: 19/02/2007 10:46:25
Mensagens: 42
Offline

eu consigui formatar a data pegando apenas o horário, através de sua substring na posição de 12 a 18, quanto às threads, também gostaria de conhecer como se implementa isso em Java. Existe algum componente como o reloginho no delphi onde se colocava processos rodando sem travar o programa?
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline

Beleza, acho que é isso mesmo.

Só que não seria melhor criar o sistema e dar o setVisible fora do while? Depois a Thread poderia cuidar apenas da atualização do label.

Finalmente, coloque também o sleep() que eu havia esquecido de manhã. Meu código já está atualizado ali em cima!
[WWW]
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline

Nilson,

Existe sim, mas não é um componente. É uma classe. Na verdade existem duas.

Dê uma pesquisada nas classes java.util.Timer e java.swing.Timer. Normalmente eu uso a primeira, ou gerencio através de Threads mesmo.
[WWW]
correainfo
JavaGuru
[Avatar]

Membro desde: 16/04/2005 21:04:25
Mensagens: 240
Localização: São Paulo SP - Cidade Natal : Auriflama,SP
Offline

tiagosarno nem precisa colocar numa thread coloca um while dentro de um metodo da uma olhada no exemplo abaixo espero ter ajudado.



Qualquer duvida post ae...



11-75333451

Desenvolvedor Java e IPhone



[Email] [MSN]
tiagosarno
Debugger
[Avatar]

Membro desde: 17/02/2007 10:07:03
Mensagens: 66
Localização: Goiânia
Offline

Vini desculpa ai cara mais ainda consegui, acho que o código agora esta certo mas esta dando um erro que desconheço, o erro é:
non-static variable LabelHora cannot be referenced from a static context. Na linha ' LabelHora.setText(formattedDate); '

Eis o código, a linha que esta dando erro esta marcada com " <-- ":


Acho que tem alguma coisa a ver com váriavel global mas como sou novo na linguagem não sei bem o que é este erro. Help please ...

Tiago Rocha Sarno - Programador
http://tiagosarno.wordpress.com
[Email] [WWW]
shison
JavaBaby
[Avatar]

Membro desde: 28/12/2006 01:08:46
Mensagens: 82
Offline

Olá, este problema é por você estar trabalhando com uma declaração não estática (LabelHora) dentro de um método estático (Main).
No caso o seu Label deve estar declarado como componente no escopo da classe do seu "formulário".
Daí você pode fazer duas coisas:
- Instanciar todo seu formulário e tudo mais dentro do seu método Main e trabalhar lá sem problemas (muita confusão).
ou
- De seu método Main, instanciar a classe que implementa o formulário e então a partir desta (do form), trabalhar com os componentes.

----
Hudson Pena Magalhães
[MSN]
mariano
What is classpath?

Membro desde: 26/01/2007 13:40:20
Mensagens: 8
Offline

Seguinte: O Net Beans 5.0 não vem com um jar que vem apenas no 3.6 que é o Timer.jar e deve ser adicionado na sua biblioteca do Net Beans...
Este é o único porém que vi... e consigo rodar relógios...
tiagosarno
Debugger
[Avatar]

Membro desde: 17/02/2007 10:07:03
Mensagens: 66
Localização: Goiânia
Offline


De seu método Main, instanciar a classe que implementa o formulário e então a partir desta (do form), trabalhar com os componentes


Pessoal será que alguém pode me mostrar como instanciar este formulário em meu código, já tentei de tudo quanto é jeito e fica sempre dando este erro, o código é o seguinte:



Tiago.

Tiago Rocha Sarno - Programador
http://tiagosarno.wordpress.com
[Email] [WWW]
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline

A label não é um componente da classe de interface sistema?

Então você teria que alterar a criação para:
sistema s = new sistema();
s.setVisible(true);

Depois, na linha que dá erro, você deve fazer:


E. do contrário que disse o colega, precisa sim de outra thread para executar o código, caso contrário sua interface gráfica ficará travada.
[WWW]
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline

Segue abaixo um exemplo que realmente funciona:


[WWW]
 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team