1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

ActionListener no Java

Ola, meu nome e André sou novo aqui na comunidade, e novo no mundo da programação, fiz um código onde eu criei um Cronometro, quando eu uso o método main estanciando a Class e chamando o método ele funciona normal, só que quando eu criei o evento no caso usando ActionListener e tento chamar esse método pelo botão iniciar, eu não consigo parece que entra em loop. ALGUÉM PODE ME AJUDAR POR FAVOR, segue o código abaixo agradeço desde já!

package Cronometro;

import java.awt.Color;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.SwingConstants;

public class Cronometro extends JFrame implements ActionListener{

    Font font = new Font("Arial", Font.BOLD, 100);

    JLabel lblHora = new JLabel("00");
    JLabel lblMinuto = new JLabel("00");
    JLabel lblSegundo = new JLabel("00");
    JLabel lblMilisegundo = new JLabel("00");

    JButton  b1 = new JButton("Iniciar");


    public Cronometro() {
        setLayout(null);

        add(lblHora);
        lblHora.setHorizontalAlignment(SwingConstants.CENTER);
        lblHora.setBorder(BorderFactory.createLineBorder(Color.black, 1));
        lblHora.setBounds(50, 100, 150, 150);
        lblHora.setFont(font);

        add(lblMinuto);
        lblMinuto.setHorizontalAlignment(SwingConstants.CENTER);
        lblMinuto.setBorder(BorderFactory.createLineBorder(Color.black, 1));
        lblMinuto.setBounds(200, 100, 150, 150);
        lblMinuto.setFont(font);

        add(lblSegundo);
        lblSegundo.setHorizontalAlignment(SwingConstants.CENTER);
        lblSegundo.setBorder(BorderFactory.createLineBorder(Color.black, 1));
        lblSegundo.setBounds(350, 100, 150, 150);
        lblSegundo.setFont(font);

        add(lblMilisegundo);
        lblMilisegundo.setHorizontalAlignment(SwingConstants.CENTER);
        lblMilisegundo.setBorder(BorderFactory.createLineBorder(Color.black, 1));
        lblMilisegundo.setBounds(500, 100, 150, 150);
        lblMilisegundo.setFont(font);

        add(b1);
        b1.setBounds(570, 300, 80,30);
        b1.addActionListener(this);


        setTitle("Cronometro");
        setSize(700, 400);
        setVisible(true);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setResizable(false);
        setLocationRelativeTo(null);



    }
     public void contar() {

        for (int min = 0; min < 60; min++) {
            if (min < 10) {
                lblMinuto.setText("0" + min + "");
            } else {
                lblMinuto.setText(min + "");
            }
            for (int seg = 0; seg < 60; seg++) {
                if (seg < 10) {
                    lblSegundo.setText("0" + seg + "");
                } else {
                    lblSegundo.setText(seg + "");
                }

                for (int miliseg = 0; miliseg < 60; miliseg++) {
                    if (miliseg < 10) {
                        try {
                            Thread.sleep(16, 66);
                            lblMilisegundo.setText("0" + miliseg + "");
                        } catch (Exception ex) {
                            JOptionPane.showConfirmDialog(null, "erro!!");
                        }
                    } else {
                        try {
                            Thread.sleep(16, 66);
                            lblMilisegundo.setText(miliseg + "");
                        } catch (Exception ex) {
                            JOptionPane.showConfirmDialog(null, "erro!!");
                        }
                    }
                }

            }

        }
    }



    @Override
    public void actionPerformed(ActionEvent evt){
     if(evt.getSource() == b1) {

         contar(); // aqui não funciona!

     }  



    }


    public static void main(String[] args) {

       Cronometro c = new Cronometro();

       c.contar();//aqui funciona!

    }  

}
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

0 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags java ou faça a sua própria pergunta.