package cronometro;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.UIManager;

public class Cronometro extends JFrame implements Runnable, ActionListener
{

public static int onoff =0;
public Cronometro()
{
setTitle("cronometro");
setSize(500, 200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new BorderLayout());

//Etiqueta donde se colocara el tiempo
tiempo = new JLabel("00:00:000");
tiempo.setFont(new Font(Font.SERIF, Font.BOLD, 50));
tiempo.setHorizontalAlignment(JLabel.CENTER);
tiempo.setForeground(Color.BLUE);
tiempo.setBackground(Color.WHITE);
tiempo.setOpaque(true);

add(tiempo, BorderLayout.CENTER);

//Boton iniciar
JButton btn = new JButton("Iniciar");
btn.addActionListener(this);
add(btn, BorderLayout.SOUTH);

//Boton reiniciar inicia nuevamente desde 0
JButton btnP= new JButton("Reiniciar");
btnP.addActionListener(this);
add(btnP, BorderLayout.EAST);

//boton parar
JButton btnC= new JButton("Stop");
btnC.addActionListener(this);
add(btnC, BorderLayout.WEST);

this.setLocationRelativeTo(null);
setVisible(true);
}
public void run(){
Integer minutos =0, segundos = 0, milesimas =0;
//min es minutos, seg es segundo y mil es milesimas de segundo
String min=":", seg=":", mil=":";
try
{
while(cronometroActivo)
{
Thread.sleep(4);
//incrementamos 4milesimas de segundo

milesimas +=4;

//cuando llega a 1000 osea 1 segundo aumneta 1 segundo
//y las milesimas de segundo de nuevo a 0
if (milesimas ==1000)
{
milesimas = 0;
segundos +=1;
if (segundos == 60)
{
segundos=0;
minutos ++;

}
}
if(minutos < 10)min= "0" + minutos;
else min=minutos.toString();
if(segundos<10)seg="0" + segundos;
else seg= segundos.toString();
if(milesimas<10)mil="0" + milesimas;
else mil= milesimas.toString();
tiempo.setText(min + ":" + seg + ":" + mil);
}
}catch(Exception e){}
tiempo.setText("00:00:000");
}

public void actionPerformed(ActionEvent evt){
Object o=evt.getSource();
if( o instanceof JButton)

{
JButton btn = (JButton)o;
if(btn.getText().equals("Iniciar")){
if(onoff==0){
onoff=1;
iniciarCronometro();
}
}

if(btn.getText().equals("Reiniciar")){
if (onoff == 1){
onoff = 0;
pararCronometro();
}

}

if(btn.getText().equals("stop")){
if (onoff == 1){
detenerConometro();
}
}
}
}

public void iniciarCronometro(){
cronometroActivo = true;
hilo = new Thread(this);
hilo.start();
}

public void pararCronometro(){
cronometroActivo = false;
}

public void detenerConometro(){
hilo.stop();
}

public static void main(String[] args){
new Cronometro();
}
JLabel tiempo;
Thread hilo;
boolean cronometroActivo;
}

package layouts;

import java.awt.BorderLayout;
import java.awt.Container;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class borderlayout extends JFrame{
public static final int WIDTH_JFRAME = 500;
public static final int HEIGHT_JFRAME = 400;

public borderlayout(){
setSize(WIDTH_JFRAME, HEIGHT_JFRAME);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

//agregar un contenedor
Container contenedor = getContentPane();
//especificar el layout
setLayout(new BorderLayout( ));

JLabel label1 = new JLabel ("Norte");//se creo
//añadir cntenedor
contenedor.add(label1, BorderLayout.NORTH);

JLabel label2 = new JLabel ("Sur");
contenedor.add(label2, BorderLayout.SOUTH);

JLabel label3 = new JLabel ("centro");
contenedor.add(label3, BorderLayout.CENTER);

JLabel label4 = new JLabel ("Este");
contenedor.add(label4, BorderLayout.EAST);

JLabel label5 = new JLabel ("Oeste");
contenedor.add(label5, BorderLayout.WEST);
}//cierra constructor

public static void main (String [] args){
borderlayout gui= new borderlayout();
gui.setVisible(true);
}

}

package layouts;

import java.awt.Color;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;

public class botones extends JFrame implements ActionListener{

JButton boton1, boton2, boton3, boton4, boton5, boton6, boton7, boton8,
boton9;
//constructor
public botones(){
super ("botoesdecolores");
Container contenedor =getContentPane();
//matriz de 3x3
setLayout(new GridLayout(3,3,1,1));
boton1= new JButton ("rojo");
boton1.setForeground(Color.red);
contenedor.add(boton1);

boton2= new JButton ("verde");
boton2.setForeground(Color.GREEN);
contenedor.add(boton2);

boton3= new JButton ("azul");
boton3.setForeground(Color.blue);
contenedor.add(boton3);

boton4= new JButton ("amarillo");
boton4.setForeground(Color.yellow);
contenedor.add(boton4);

boton5= new JButton ("naranja");
boton5.setForeground(Color.orange);
contenedor.add(boton5);

boton6= new JButton ("rosa");
boton6.setForeground(Color.pink);
contenedor.add(boton6);

boton7= new JButton ("magenta");
boton7.setForeground(Color.magenta);
contenedor.add(boton7);

boton8= new JButton ("cyan");
boton8.setForeground(Color.cyan);
contenedor.add(boton8);

boton9= new JButton ("negro");
boton9.setForeground(Color.black);
contenedor.add(boton9);

//llamando al metodo para generar "listeners"
addListeners();

}

private void addListeners(){

boton1.addActionListener(this);
boton2.addActionListener(this);
boton3.addActionListener(this);

boton4.addActionListener(this);
boton5.addActionListener(this);
boton6.addActionListener(this);
boton7.addActionListener(this);
boton8.addActionListener(this);
boton9.addActionListener(this);
}

public void actionPerformed(ActionEvent e){
if(e.getSource()==boton1){
boton1.setBackground(Color.red);

}
if(e.getSource()==boton2){
boton2.setBackground(Color.GREEN);

}
if(e.getSource()==boton3){
boton3.setBackground(Color.blue);

}
if(e.getSource()==boton4){
boton4.setBackground(Color.yellow);

}
if(e.getSource()==boton5){
boton5.setBackground(Color.orange);

}
if(e.getSource()==boton6){

boton6.setBackground(Color.pink);

}
if(e.getSource()==boton7){
boton7.setBackground(Color.magenta);

}
if(e.getSource()==boton8){
boton8.setBackground(Color.cyan);
}

if(e.getSource()==boton9){
boton9.setBackground(Color.black);

}

}

public static void main(String[] ar){
botones formulario1=new botones();
formulario1.setBounds(0, 0, 600, 500);
formulario1.setVisible(true);
}

}

package layouts;

import java.awt.Color;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;

/**
*
* @author Rebe
*/
public class imagenes extends JFrame implements ActionListener{

JButton boton1, boton2, boton3, boton4, boton5, boton6, boton7, boton8,
boton9;

//constructor
public imagenes (){
super ("botoesdecolores");
Container contenedor =getContentPane();
//matriz de 3x3
setLayout(new GridLayout(3,3,1,1));
boton1= new JButton ("rojo");
boton1.setForeground(Color.red);
contenedor.add(boton1);

boton2= new JButton ("verde");
boton2.setForeground(Color.GREEN);
contenedor.add(boton2);

boton3= new JButton ("azul");
boton3.setForeground(Color.blue);
contenedor.add(boton3);

boton4= new JButton ("amarillo");
boton4.setForeground(Color.yellow);
contenedor.add(boton4);

boton5= new JButton ("naranja");
boton5.setForeground(Color.orange);
contenedor.add(boton5);

boton6= new JButton ("rosa");
boton6.setForeground(Color.pink);
contenedor.add(boton6);

boton7= new JButton ("magenta");
boton7.setForeground(Color.magenta);
contenedor.add(boton7);

boton8= new JButton ("cyan");
boton8.setForeground(Color.cyan);
contenedor.add(boton8);

boton9= new JButton ("negro");
boton9.setForeground(Color.black);
contenedor.add(boton9);

//llamando al metodo para generar "listeners"
addListeners();

}

private void addListeners(){

boton1.addActionListener(this);
boton2.addActionListener(this);
boton3.addActionListener(this);
boton4.addActionListener(this);
boton5.addActionListener(this);
boton6.addActionListener(this);
boton7.addActionListener(this);

boton8.addActionListener(this);
boton9.addActionListener(this);
}

public void actionPerformed(ActionEvent e){
if(e.getSource()==boton1){
ImageIcon ima1 = new ImageIcon("a.jpg");
boton1.setIcon(ima1);
hilo Hilo= new hilo(boton1);
Hilo.start();

}
if(e.getSource()==boton2){
ImageIcon ima2 = new ImageIcon("b.jpg");
boton2.setIcon(ima2);
hilo Hilo= new hilo(boton2);
Hilo.start();

}
if(e.getSource()==boton3){
ImageIcon ima3 = new ImageIcon("c.JPG");
boton3.setIcon(ima3);
hilo Hilo= new hilo(boton3);
Hilo.start();

}
if(e.getSource()==boton4){
ImageIcon ima4 = new ImageIcon("d.JPG");
boton4.setIcon(ima4);
hilo Hilo= new hilo(boton4);

Hilo.start();

}
if(e.getSource()==boton5){
ImageIcon ima5 = new ImageIcon("e.JPG");
boton5.setIcon(ima5);
hilo Hilo= new hilo(boton5);
Hilo.start();

}
if(e.getSource()==boton6){
ImageIcon ima6 = new ImageIcon("f.JPG");
boton6.setIcon(ima6);
hilo Hilo= new hilo(boton6);
Hilo.start();

}
if(e.getSource()==boton7){
ImageIcon ima7 = new ImageIcon("g.jpg");
boton7.setIcon(ima7);
hilo Hilo= new hilo(boton7);
Hilo.start();

}
if(e.getSource()==boton8){
ImageIcon ima8= new ImageIcon("h.jpg");
boton8.setIcon(ima8);
hilo Hilo= new hilo(boton8);
Hilo.start();
}

if(e.getSource()==boton9){
ImageIcon ima9 = new ImageIcon("j.jpg");
boton9.setIcon(ima9);
hilo Hilo= new hilo(boton9);
Hilo.start();

}

}

public static void main(String[] ar){
imagenes formulario1=new imagenes();
formulario1.setBounds(0, 0, 600, 500);
formulario1.setVisible(true);
}

}

package Fiesta;

import Fiesta.Desincronizado;

public class Borracho extends Thread {

private Desincronizado sincro;
private int numero;

public Borracho(Desincronizado x, int number){
sincro=x;
numero=number;
}

public void run(){
int value;
for(int i=1; i<11;i++){

value=sincro.getContenido();
System.out.println("Borracho# " + this.numero + " Toma "+
value + "cervesa");
try{
// probar consumidor mas rapido

//sleep(400);

//probar productor mas rapido
sleep(100);
}catch(InterruptedException e){

}
}
}
}

package Fiesta;

public class Desincronizado {
private int contenido;

public int getContenido() {
return contenido;
}

public void setContenido(int contenido) {
this.contenido = contenido;
}

}

package Fiesta;

import Fiesta.Desincronizado;

public class Mesero extends Thread{

private Desincronizado sincro;
private int numero;
public Mesero (Desincronizado c , int number ){
sincro = c;
numero = number;
}

public void run(){

for (int i=1; i<11; i++){

sincro.setContenido(i);
System.out.println("Mesero#"+this.numero + " Sirve "+i );
try{
sleep(400);
}catch(InterruptedException e){
e.printStackTrace();

}
}
}

package Fiesta;

import Fiesta.Desincronizado;

public class Mesero extends Thread{

private Desincronizado sincro;
private int numero;
public Mesero (Desincronizado c , int number ){
sincro = c;
numero = number;
}

public void run(){

for (int i=1; i<11; i++){

sincro.setContenido(i);
System.out.println("Mesero#"+this.numero + " Sirve "+i );
try{
sleep(400);
}catch(InterruptedException e){
e.printStackTrace();

}
}
}

}package Fiesta;

import Fiesta.Desincronizado;
import Fiesta.Borracho;

import Fiesta.Mesero;

public class PruebaProductorConsumidor {
public static void main(String args[]){
Desincronizado desi= new Desincronizado();
Mesero p = new Mesero(desi,1);
Borracho c= new Borracho(desi,1);
p.setPriority(Thread.MAX_PRIORITY);
c.setPriority(Thread.MIN_PRIORITY);
p.start();
c.start();

}

}

package sincro2;

public class PruebaProductorConsumidor {
public static void main(String args[]){
Desincronizado d= new Desincronizado();
Productor p = new Productor(d,1);
Consumidor c= new Consumidor(d,1);
p.start();
c.start();

}

}
package sincro2;

public class Consumidor extends Thread {

private Desincronizado sincro;
private int numero;

public Consumidor(Desincronizado x, int number){
sincro=x;
numero=number;
}

public void run(){
int value;
for(int i=1; i<11;i++){

value=sincro.getContenido();

System.out.println("Consumidor # " + this.numero + "
obtiene "+ value);
try{
// probar consumidor mas rapido
//sleep(400);

//probar productor mas rapido
sleep(100);
}catch(InterruptedException e){

}
}
}
}package sincro2;

public class Desincronizado {
private int contenido;

public int getContenido() {
return contenido;
}

public void setContenido(int contenido) {
this.contenido = contenido;
}

}
package sincro2;

public class Productor extends Thread{

private Desincronizado sincro;
private int numero;
public Productor (Desincronizado c , int number ){
sincro = c;
numero = number;
}

public void run(){

for (int i=1; i<11; i++){

sincro.setContenido(i);
System.out.println("Productor #"+this.numero + " produce
"+i );
try{
sleep(100);
}catch(InterruptedException e){

}
}
}

}

package sincro3;

import sincro3.Desincronizado;
import sincro3.Consumidor;
import sincro3.Productor;

public class PruebaProductorConsumidor {
public static void main(String args[]){
Desincronizado desi= new Desincronizado();
Productor p = new Productor(desi,1);
Consumidor c= new Consumidor(desi,1);
p.setPriority(Thread.MAX_PRIORITY);
c.setPriority(Thread.MIN_PRIORITY);
p.start();

c.start();

}

}