Jogar tempo em textField

16 respostas
evertonsilvagomesjav

Bom dia a todos!!

Estou tentando implementar em um projeto a seguinte funçao:

Tenho 3 textField: textFieldTempo1 textFieldTempo2 textFieldTempo3, um jButtonIniciar e um jButtonParar, quando eu clico no jButtonParar ele joga o tempo no textFieldTempo1 eu to tentando fazer com que quando eu clicar no jButtonParar novamente ele jogar o novo tempo no textFieldTempo2 e assim adiante mas ta dando erro.

Segue o codigo:

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * Tempo.java
 *
 * Created on 20/10/2009, 10:49:44
 */

package Interfaces;

import javax.swing.JOptionPane;
import java.util.Timer;
import java.util.TimerTask;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.awt.EventQueue;
/**
 *
 * @author everton
 */
public class Tempo extends javax.swing.JFrame {



    Long tempoInicial;
    private Timer timer;
    private static final int INICIO = 0;
    private static final int DELAY_MILLISEGUNDOS = 1000;
    private static final DateFormat FORMATO = new SimpleDateFormat("ss");
    private Thread clockThread;
    private int time = 0;

    /** Creates new form Tempo */
    public Tempo() {
        initComponents();
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */

       @SuppressWarnings("unchecked")

        private class ClockRunnable implements Runnable {
            public void run() {
                try {
                    while (true) {

                        EventQueue.invokeLater(new Runnable() {
                            public void run() {
                                // Só podemos chamar setHora diretamente dessa
                                // forma, pois esse Runnable é uma InnerClass não
                                // estática.
                                textField.setText(""+(time++));
                            }
                        });     
                        // Fazemos nossa thread dormir por um segundo, liberando o
                        // processador para outras threads processarem.
                        Thread.sleep(1000);
                    }
                }
                catch (InterruptedException e) {

                }
            }
        }


    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

        jPanel1 = new javax.swing.JPanel();
        jLabel1 = new javax.swing.JLabel();
        jButtonIniciar = new javax.swing.JButton();
        jButtonParar = new javax.swing.JButton();
        jLabel2 = new javax.swing.JLabel();
        textField = new java.awt.TextField();
        jLabel3 = new javax.swing.JLabel();
        textFieldTempoFinal = new java.awt.TextField();
        jButtonLimpar = new javax.swing.JButton();
        jLabel4 = new javax.swing.JLabel();
        textFieldCalculo = new java.awt.TextField();
        jLabelTime1 = new javax.swing.JLabel();
        textFieldTime1 = new java.awt.TextField();
        jLabelTime2 = new javax.swing.JLabel();
        textFieldTime2 = new java.awt.TextField();
        jLabelTime3 = new javax.swing.JLabel();
        textFieldTime3 = new java.awt.TextField();
        jButtonIniciarCalcular = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jLabel1.setFont(new java.awt.Font("Monotype Corsiva", 3, 36)); // NOI18N
        jLabel1.setText("Tempo");

        jButtonIniciar.setText("Iniciar");
        jButtonIniciar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                iniciar(evt);
            }
        });

        jButtonParar.setText("Parar");
        jButtonParar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                parar(evt);
            }
        });

        jLabel2.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N
        jLabel2.setText("Tempo Corrente");

        jLabel3.setFont(new java.awt.Font("Tahoma", 2, 14)); // NOI18N
        jLabel3.setText("Tempo FInal");

        textFieldTempoFinal.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                textFieldTempoFinalActionPerformed(evt);
            }
        });

        jButtonLimpar.setText("Limpar");
        jButtonLimpar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                Limpar(evt);
            }
        });

        jLabel4.setFont(new java.awt.Font("Tahoma", 2, 14)); // NOI18N
        jLabel4.setText("Calculo Final");

        jLabelTime1.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N
        jLabelTime1.setText("Time 1");

        jLabelTime2.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N
        jLabelTime2.setText("Time 2");

        jLabelTime3.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N
        jLabelTime3.setText("Time 3");

        jButtonIniciarCalcular.setText("Calcular");
        jButtonIniciarCalcular.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                calcular(evt);
            }
        });

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
                .addContainerGap(277, Short.MAX_VALUE)
                .addComponent(jButtonIniciar)
                .addGap(18, 18, 18)
                .addComponent(jButtonParar)
                .addGap(18, 18, 18)
                .addComponent(jButtonIniciarCalcular)
                .addGap(18, 18, 18)
                .addComponent(jButtonLimpar)
                .addContainerGap())
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addGap(46, 46, 46)
                .addComponent(jLabelTime1)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 342, Short.MAX_VALUE)
                .addComponent(jLabel3, javax.swing.GroupLayout.PREFERRED_SIZE, 86, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(100, 100, 100))
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(textFieldTime1, javax.swing.GroupLayout.PREFERRED_SIZE, 105, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 256, Short.MAX_VALUE)
                .addComponent(textFieldTempoFinal, javax.swing.GroupLayout.PREFERRED_SIZE, 186, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(46, 46, 46))
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(textFieldTime2, javax.swing.GroupLayout.PREFERRED_SIZE, 105, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 288, Short.MAX_VALUE)
                .addComponent(textFieldCalculo, javax.swing.GroupLayout.PREFERRED_SIZE, 132, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(68, 68, 68))
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(textFieldTime3, javax.swing.GroupLayout.PREFERRED_SIZE, 105, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 299, Short.MAX_VALUE)
                .addComponent(textField, javax.swing.GroupLayout.PREFERRED_SIZE, 105, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(84, 84, 84))
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
                .addGap(44, 44, 44)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addGroup(javax.swing.GroupLayout.Alignment.LEADING, jPanel1Layout.createSequentialGroup()
                        .addComponent(jLabelTime2)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 346, Short.MAX_VALUE)
                        .addComponent(jLabel4, javax.swing.GroupLayout.PREFERRED_SIZE, 86, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addComponent(jLabelTime3)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 358, Short.MAX_VALUE)
                        .addComponent(jLabel2)))
                .addGap(98, 98, 98))
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addGap(229, 229, 229)
                .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 103, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(271, Short.MAX_VALUE))
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addGap(83, 83, 83)
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(jLabelTime1)
                            .addComponent(jLabel3))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(textFieldTime1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(textFieldTempoFinal, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jLabel4))
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addContainerGap()
                        .addComponent(jLabel1)
                        .addGap(88, 88, 88)
                        .addComponent(jLabelTime2)))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(textFieldTime2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(textFieldCalculo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addComponent(jLabel2)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(textField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 53, Short.MAX_VALUE)
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(jButtonLimpar)
                            .addComponent(jButtonIniciarCalcular)
                            .addComponent(jButtonParar)
                            .addComponent(jButtonIniciar)))
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addComponent(jLabelTime3)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(textFieldTime3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addContainerGap())
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
        );

        pack();
    }// </editor-fold>

    private void iniciar(java.awt.event.ActionEvent evt) {                         
      
        clockThread = new Thread(new ClockRunnable());
        clockThread.setDaemon(true);
        clockThread.start();
        textField.setText("");

        jButtonParar.setEnabled(true);

      tempoInicial = System.currentTimeMillis() / 1000;

      textFieldTempoFinal.setText(null);


    }                        

    private void parar(java.awt.event.ActionEvent evt) {                       

        clockThread.interrupt();
        textField.setText(""+(time-1));
        time = 0;

        jButtonParar.setEnabled(false);

        Long tempoFinal = System.currentTimeMillis() / 1000;

        Long resultado = tempoFinal - tempoInicial;

        Resultado result = new Resultado();

        result.setPrimeiroResultado(resultado.toString());

        if(textFieldTime1.equals(null)){
        textFieldTime1.setText(result.getPrimeiroResultado());
        }else {
            textFieldTime2.setText(result.getPrimeiroResultado());
        }
    }                      

    private void Limpar(java.awt.event.ActionEvent evt) {                        

        textFieldTempoFinal.setText(null);

    }                       

    private void textFieldTempoFinalActionPerformed(java.awt.event.ActionEvent evt) {                                                    
       textFieldTempoFinal.setText(FORMATO.format(new Date()));
    }                                                   

    private void calcular(java.awt.event.ActionEvent evt) {
        // TODO add your handling code here:
    }

    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Tempo().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify
    private javax.swing.JButton jButtonIniciar;
    private javax.swing.JButton jButtonIniciarCalcular;
    private javax.swing.JButton jButtonLimpar;
    private javax.swing.JButton jButtonParar;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabelTime1;
    private javax.swing.JLabel jLabelTime2;
    private javax.swing.JLabel jLabelTime3;
    private javax.swing.JPanel jPanel1;
    private java.awt.TextField textField;
    private java.awt.TextField textFieldCalculo;
    private java.awt.TextField textFieldTempoFinal;
    private java.awt.TextField textFieldTime1;
    private java.awt.TextField textFieldTime2;
    private java.awt.TextField textFieldTime3;
    // End of variables declaration

   
}

16 Respostas

M

Cara, pelo o que eu vi, a primeira coisa que voce poderia fazer é criar uma variavel Resultado global e limpar ela na ação do botão limpar,
segundo voce pode verificar se o campo esta vazio usando textField.getText().equals( “” );

Poste suas duvidas que se der nos vamos respondendo.

Valeu

evertonsilvagomesjav

o que ta acontecendo é que ele esta jogando o tempo no textFieldTimer2

M

ao invés de no metodo “parar” voce colocar

if(textFieldTime1.equals(null)){

coloque:

if(textFieldTime1.getText().equals("")){

resolvera este problema

evertonsilvagomesjav

miguel vlw, vê se vc consegue achar algum erro aqui por favor:

if(textFieldTime1.getText().equals("")){
            textFieldTime1.setText(result.getPrimeiroResultado());
         }else if{ // nao deixa compilar erro aqui deve ser coisa boba mas nao achei mesmo onde esta o erro.
            textFieldTime2.setText(result.getPrimeiroResultado());
         }else{
            textFieldTime3.setText(result.getPrimeiroResultado());
        }
M
if(textFieldTime1.getText().equals("")){
            textFieldTime1.setText(result.getPrimeiroResultado());
         }else if(textFieldTime2.getText().equals("")){
            textFieldTime2.setText(result.getPrimeiroResultado());
         }else{
            textFieldTime3.setText(result.getPrimeiroResultado());
        }

faltou a verificação do segundo if

criador

Para este tipo de comparação, nunca utilize

equals("")

e sim

isEmpty()

Abraço!

M

bom, a partir da versão 1.6 do java é a nova solução

evertonsilvagomesjav

Hum seguindo sua dica Criador mas ele nao seta o time3 ele seta novamente no time2.

if(textFieldTime1.getText().isEmpty() && textFieldTime2.getText().isEmpty() && textFieldTime3.getText().isEmpty()){ textFieldTime1.setText(result.getPrimeiroResultado()); }else if(!textFieldTime1.getText().isEmpty() && textFieldTime3.getText().isEmpty()) { textFieldTime2.setText(result.getPrimeiroResultado()); }else if(!textFieldTime2.getText().isEmpty() && !textFieldTime1.getText().isEmpty()){ textFieldTime3.setText(result.getPrimeiroResultado()); }

evertonsilvagomesjav

galera tentei mudar aqui mas quando o textFieldTime2 esta preenchido ja com seu tempo, no proximo clique no botao parar ele preenche novamente no textFieldTime2 e nao no textFieldTime3, olha como ta o codigo:

if(textFieldTime1.getText().isEmpty()){ textFieldTime1.setText(result.getPrimeiroResultado()); }else if(!textFieldTime1.getText().isEmpty()){ textFieldTime2.setText(result.getPrimeiroResultado()); }else if(!textFieldTime2.getText().isEmpty()){ textFieldTime3.setText(result.getPrimeiroResultado()); }

evertonsilvagomesjav

alguem conseguiu enchergar onde esta o erro ?

ja agradecendo vlw!!!

M
if(textFieldTime1.getText().isEmpty()){
          textFieldTime1.setText(result.getPrimeiroResultado());
         }else if(textFieldTime2.getText().isEmpty()){
            textFieldTime2.setText(result.getPrimeiroResultado());
         }else if(textFieldTime3.getText().isEmpty()){
            textFieldTime3.setText(result.getPrimeiroResultado());
         }
evertonsilvagomesjav

po miguel pq a condiçao de cima nao tava dando? pq se o textFieldTime2 nao estivesse vazio ele ia jogar no textFieldTime3 nao?

ViniGodoy

Pq vc colocou o not nos outros ifs…

Leia o que você estava testando.

“Se o textfield 1 estiver vazio”
Escreva no textfield 1
“Senão, se o textfield 2 não estiver vazio”
Escreva no textfield 2

ViniGodoy

Acho que o ideal mesmo é criar esses JTextFields num array:

JTextField txtFieldsTime[] = new JTextField[3];

Depois, cria uma variável para dizer em que textfield escrever:

int txtFieldToWrite = 0;

Aí, no seu método de escrita, faça:

txtFieldsTime[txtFieldToWrite].setText(result.getPrimeiroResultado()); txtFieldToWrite = (txtFieldToWrite + 1) % txtFieldsTime.length;

Isso fará que no primeiro click vc escreva no primeiro JTextField, no segundo irá escrever no próximo JTextField, e no terceiro, no último JTextField. No quarto click, ele voltaria para o primeiro. Se não quiser voltar, basta tirar aquele % e colocar um teste no início do código do botão:

if (txtFieldToWrite == txtFieldsTime.length) return;

criador

Desculpe a minha falta de atenção :stuck_out_tongue:

Abraço!

evertonsilvagomesjav

hummmm muito obrigado pela dica Vini

Criado 22 de outubro de 2009
Ultima resposta 23 de out. de 2009
Respostas 16
Participantes 4