import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;

public class Ejemplo_ver_hilo extends JFrame{
    private JTextField campoTexto;
    private JTextField campoTexto1;
    private JTextField campoTexto2;
    private JButton miBoton;
    private Contador1 contador1;
    private Contador2 contador2;
    
    public Ejemplo_ver_hilo() {
        super("Hilos");
        this.definirVentana();
        
        this.setSize(400, 100);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
        this.setVisible(true);    
        contador1.start();
        contador2.start();
    }
    
    public void definirVentana() {
        campoTexto = new JTextField(10);
        campoTexto1 = new JTextField(3);
        campoTexto2 = new JTextField(3);
        contador1 = new Contador1();
        contador2 = new Contador2();
        miBoton = new JButton("Ok");
        
        miBoton.addActionListener(new accionBotonHilo());
        
        this.setLayout(new FlowLayout());
        
        add(campoTexto);
        add(campoTexto1);
        add(campoTexto2);
        add(miBoton);
        
    }
    
    private class Contador1 extends Thread {
        private int cuenta = 0;
        
        @Override
        public void run(){
            while(true) {
                campoTexto1.setText(Integer.toString(cuenta++));
                try {
                    sleep(1000);
                } catch (InterruptedException ex) {
                    Logger.getLogger(Ejemplo_ver_hilo.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        }
    }
 
    private class Contador2 extends Thread {
        private int cuenta = 0;
        
        @Override
        public void run(){
            while(true) {
                campoTexto2.setText(Integer.toString(cuenta+=2));
                try {
                    sleep(1000);
                } catch (InterruptedException ex) {
                    Logger.getLogger(Ejemplo_ver_hilo.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        }
    }
    
    private class accionBotonHilo implements ActionListener {
        public void actionPerformed(ActionEvent arg0) {
            javax.swing.JOptionPane.showMessageDialog(null, campoTexto.getText());
        }
    }
    
    static public void main(String args[]) {
        new Ejemplo_ver_hilo();
    }
}
