Olá. Criei uma aplicação com um Jframe, onde necessito inserir um relógio dentro do meu Jframe.
Encontrei essa thread interessante na internet:
[code]public class RelogioThread extends JFrame{
JLabel label; // label onde será impressa a hora atual
public RelogioThread(){//construtor
super("RELÓGIO");//seta o título do JFrame
setSize(250,60);//seta o tamanho do JFrame
setVisible(true);//seta visível
Container tela = getContentPane();//container onde ficara o label
label = new JLabel();//instancia o label
tela.add(label);//adiciona o label à tela
label.setBounds(65,0,45,85);//seta a posição do label
iniciaRelogio();//inicia o relógio
}
public void iniciaRelogio(){
new Thread(){//instancia nova thread já implementando o método run()
@Override
public void run() {//sobrescreve o método run()
while(0 == 0){//while para fazer o loop infinito
GregorianCalendar gc = new GregorianCalendar();//novo gregorian calendar, onde temos a data atual
int hora = gc.get(Calendar.HOUR_OF_DAY);//pega as horas
int minuto = gc.get(Calendar.MINUTE);//pega os minutos
int segundo = gc.get(Calendar.SECOND);//pega os segundos
String horaString;//nova string horas
String minString;//nova string minutos
String segundoString;//nova string segundos
if(hora < 10){//se hora for menor que 10 precisa colocar um 0 à esquerda
horaString = "0"+hora;
}else{
horaString = ""+hora;
}
if(minuto < 10){//se minuto for menor que 10 precisa colocar um 0 à esquerda
minString = "0"+minuto;
}else{
minString = ""+minuto;
}
if(segundo < 10){//se segundo for menor que 10 precisa colocar um 0 à esquerda
segundoString = "0"+segundo;
}else{
segundoString = ""+segundo;
}
label.setText(horaString+":"+minString+":"+segundoString);//seta hora atual no label
try{
sleep(1000);//faz a thread entrar em estado de espera por 1000 milissegundos ou 1 segundo
}catch(Exception e){}
}
}
}.start();//inicia a thread.
}[/code]
Contudo não gostaria de criar uma janela nova, e sim acoplar esta thread dentro de um label na minha Jframe.
É possível? Vlw =]
Na verdade, a minha dificuldade é com o Jframe/NETBEANS.
Como criar um Jframe dinâmico? Eu possuo outros elementos gráficos, botões com eventos, tudo OK.
O que tá pegando é esse Label dinâmico que não sei como fazer mesmo
Esses exemplos não foram esclarecedores, eu já havia pesquisado.
O segundo mostra com Threads, java.util.Timer e javax.Swing.Timer.
Não recomendo baixar uma API externa pra tão pouco.[/quote]
O Thread está funcionando. Como falei, a dificuldade com o Jframe/NETBEANS, o problema é que não sei como inserir meu thread dentro do meu JFrame, pois tenho outros elementos neles, como botões, etc.
Não use threads à toa. Use um javax.swing.Timer, que usa apenas 1 thread para todos os timers necessários (mesmo que você crie N instâncias de javax.swing.Timer no seu programa).
E como de costume, veja mais uma vez o exemplo dado em:
Agradeço a todos que tentaram ajudar, eu já ví exemplos interessantes de relógio, existem váários no forum.
Não vou mais criar uma thread pra isso, porém a minha dúvida não é no relógio, e sim em inserir isso no meu Jframe.
O Netbeans parece super engessado! Está muito difícil =/
[quote=entanglement]Mas é na verdade bastante simples. Vou pegar o mesmo exemplo (que criei no Eclipse), e pô-no no Netbeans para você ver.
[/quote]
Eu sou noob no Jframe… Programar a parte gráfica na unha é melhor? Eu não uso netbeans, só baixei pra este projeto por causa do Jframe, mas achei engessado!
Acho que vou estudar essa parte de interface gráfica. Como neste projeto a “beleza e organização gráfica” são o de menos, baixei o Jframe pra ser mais rápido =)
[quote=entanglement]0) Copie o arquivo Relogio.java (o que já postei acima) em algum lugar do seu projeto.
Compile seu projeto.
Arraste Relogio.java onde você quiser que ele fique no seu JFrame.
Acerte a propriedade “Formato” como você quiser que fique seu relógio.
Pronto! Agora deve funcionar. [/quote]
Tá brincando que eu posso arrastar a classe pra dentro do projeto? :shock:
Quando chegar em casa eu vou tentar, desde já te agradeço MUITO pela boa vontade!
Te devo uma breja
Não pule o passo 1 (Compilar o projeto). Se pular isso, o .class do Relogio.java não terá sido gerado, e você não conseguirá arrastar o componente para dentro do frame. OK?
Isso pode fazer parte de uma série “Como é fácil criar componentes visuais no NetBeans”. Se eu tiver muita paciência, talvez faça um relógio analógico.
É possível o usuário setar um horário? Se eu criar um JTextField ou algo do tipo, como limito a quantidade de caracteres e aplico uma máscara? E limito pra numérico? vlw =)