Kyapo Posted March 30, 2011 at 04:21 PM Report #378095 Posted March 30, 2011 at 04:21 PM Boas, A janela do programa é a seguinte: http://img585.imageshack.us/img585/6923/janela.jpg Agora o que queria fazer é que no botão sinalizado aparece-se um contador em "HH, MM, SS" que fosse até ao tempo de actualização que iria ser definido pelo utilizador como por exemplo assim: http://img809.imageshack.us/img809/6859/botaof.jpg E fazendo o tempo de actualização que mudasse o texto para "Actualizando..." e depois repeti-se até o utilizador clicar no botão de novo Já tentei procurar como poderia fazer mas não encontrei nada 😄 Se alguém me pudesse ajudar seria óptimo 😄
Knitter Posted March 30, 2011 at 06:57 PM Report #378134 Posted March 30, 2011 at 06:57 PM Vais precisar usar um contador, eventualmente threads, para ir contanto a passagem do tempo e actualizando esse botão, dá uma vista de olhos por http://download.oracle.com/javase/tutorial/uiswing/misc/timer.html
Kyapo Posted March 31, 2011 at 09:22 AM Author Report #378217 Posted March 31, 2011 at 09:22 AM Peço desculpa mas fiquei completamente na mesma, não vejo forma de resolver o meu problema 😄
Knitter Posted March 31, 2011 at 09:33 AM Report #378222 Posted March 31, 2011 at 09:33 AM Então por partes, que onde é que tens dúvidas e o que já tentaste fazer?
Kyapo Posted March 31, 2011 at 10:22 AM Author Report #378238 Posted March 31, 2011 at 10:22 AM As minhas dúvidas são as seguintes: Como é que crio o timer que vai desde o tempo que o utilizador define, segundo a janela "5" até 0 Como faço para quando chegar a zero usar o timer que já tenho feito e actualizar os dados E bem penso que se resume a isto, no entanto o que me está a atrofiar mais é mesmo o primeiro ponto 😄
Knitter Posted March 31, 2011 at 11:06 AM Report #378252 Posted March 31, 2011 at 11:06 AM Um timer é apenas uma thread que executa em paralelo com a tua thread principal e que, em intervalos pré-definidos, executa uma acção. Neste caso um timer poderá decrementar o tempo. A formatação do tempo em minutos:segundos já será algo que tens de ser tu a fazer mas é algo simples. Para criares o timer que conta o tempo, crias um timer com um intervalo de 1 segundo cuja acção é actualizar o texto e decrementar o contador de tempo. Para determinares quando chegaste ao zero podes usar um segundo timer, apenas porque facilita a criação de acções independentes, ou usar o mesmo timer e ver quando o tempo chegou a zero. Deixo um projecto exemplo, criado com NetBeans IDE, que usa dois timers independentes para fazer a contagem de tempo, o botão só é activado quando inserires um valor no campo dos minutos e, naturalmente, não tem qualquer protecção para erros ou preocupação com funcionalidade, http://www.speedyshare.com/files/27701339/TDemo.zip A parte importe com uso de timers é: //faz aparecer o tempo no botão tempo = new Timer(1000, new ActionListener() { public void actionPerformed(ActionEvent e) { jbtnActualizar.setText("" + --segundos); System.err.println("tick..."); } }); //dispara quando os minutos definidos pelo utilizador chegarem ao fim //usa o MAX de inteiros para evitar que o evento dispare na criação do timer //já que ainda não sabermos qual o valor correcto a usar actualizador = new Timer(Integer.MAX_VALUE, new ActionListener() { public void actionPerformed(ActionEvent e) { JOptionPane.showMessageDialog(me, "Actualizar coisas....", "Tempo terminou!", JOptionPane.INFORMATION_MESSAGE); } }); //..... algum código depois, acção do botão private void jbtnActualizarActionPerformed(java.awt.event.ActionEvent evt) { if (iniciado) { actualizador.stop(); tempo.stop(); jbtnActualizar.setText("Iniciar"); } else if (jftTempo.getValue() != null) { int t = Integer.parseInt(jftTempo.getValue().toString()); segundos = t * 60; //minutos > segundos intervalo = segundos * 1000; // segundos > milisegundos actualizador.setInitialDelay(intervalo); actualizador.setDelay(intervalo); actualizador.restart(); tempo.restart(); } } //.... resto do código }
Kyapo Posted March 31, 2011 at 11:20 AM Author Report #378254 Posted March 31, 2011 at 11:20 AM Knitter muito obrigado pelas dicas, vou já experimentar, no entanto penso que não lhe expliquei, é suposto queo botão "actualizar" faça o que tem a fazer sempre até que seja clicado outra vez... não sei se teve isto em conta :dontgetit:
Knitter Posted March 31, 2011 at 11:44 AM Report #378261 Posted March 31, 2011 at 11:44 AM Isso é apenas uma questão de colocares o código correcto na acção do botão, no exemplo que coloquei apenas foquei o uso dos timers porque parecia ser essa a dúvida, naturalmente, não coloquei o código para resolver o problema mas sim para exemplificar a utilização de um timer 😄
Kyapo Posted March 31, 2011 at 12:06 PM Author Report #378265 Posted March 31, 2011 at 12:06 PM Ah ok, bem eu acabei agora de almoçar e vou meter mãos à obra a ver se me safo 😄
Kyapo Posted March 31, 2011 at 12:30 PM Author Report #378267 Posted March 31, 2011 at 12:30 PM Opah, não consigo... desisto 😄
Knitter Posted March 31, 2011 at 02:43 PM Report #378297 Posted March 31, 2011 at 02:43 PM Partilha o código/aplicação que tens, se puderes.
Kyapo Posted March 31, 2011 at 03:24 PM Author Report #378309 Posted March 31, 2011 at 03:24 PM Já não vale a pena, eu falei com o meu monitor de estágio e ele mandou-me fazer outra coisa, de qualquer forma obrigado 🙂
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now