martes, 1 de noviembre de 2011

Tercera Entrega: Interfaz Grafica, Eventos y Excepciones

Interfaz Grafica

Aqui muestro la interfaz que llevo hasta el momento:

CLASE INTERFAZ

En esta primera imagen que les muestro nos muestra una ventana con 2 botones los cuales son alarma y cronometro.

En esta segunda imagen si ven despliega una ventana mas grande porque, porque se le dio click al boton alarma, lo cual cambio de ventana, pero aun le falta agregarle mas formato.

En esta otra nos muestra una ventana mas grande porque en esta le dimos click al boton cronometro lo cual nos llevo a su ventana, pero la cual aun no tiene otra funcionalidad.

Aqui esta el codigo hecho hasta el momento de esta parte:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Interfaz extends JFrame implements ActionListener {
private JButton boton, boton2;

public Interfaz(){
super("Reloj Digital");
boton = new JButton("Alarma");
boton2 = new JButton("Cronometro");

setLocationRelativeTo(null);
setLayout(new BorderLayout());
setLayout(new FlowLayout());
add(boton);
add(boton2);
boton.addActionListener(this);
boton2.addActionListener(this);
boton.setBackground(Color.WHITE);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

manejadorEvent maneja = new manejadorEvent();
boton.addActionListener(maneja);

manejadorEvent maneja2 = new manejadorEvent();
boton2.addActionListener(maneja2);
}

public class manejadorEvent implements ActionListener {

public void actionPerformed(ActionEvent e){
if(e.getSource()==boton){
setVisible(false);
final Interfaz ventana2 = new Interfaz();
ventana2.setVisible(true);
ventana2.setSize(400,300);
}else if (e.getSource()==boton2){
setVisible(false);
final Interfaz ventana3 = new Interfaz();
ventana3.setVisible(true);
ventana3.setSize(500,400);
}
}
}

public void actionPerformed(ActionEvent e){
System.out.println("00:00:00");
Object fuente = e.getSource();
if(fuente == boton){
setTitle("Alarma");
}else if (fuente == boton2){
setTitle("Cronometro");
}
}

public static void main(String[] args){
final Interfaz ventana = new Interfaz();
ventana.setVisible(true);
ventana.setSize(300,200);
}
}


CLASE RELOJ


Esta pantalla nos muesta en la terminal la hora actualizandose cada segundo, aun le falta darle formato a esta parte pero lo que queria aqui es mostrarles la hora.

Aqui el codigo de la clase reloj:

import javax.swing.*;
import java.util.Calendar;
import java.util.GregorianCalendar;
import javax.swing.JOptionPane;
import java.awt.event.*;
import java.awt.*;


public class Reloj2 extends JFrame implements Runnable{
private Thread t;
private String FormatoHora;
private Calendar obj;
private int seg, min, hora, dia, diaSemana, mes, ano;

public Reloj2 (){
this.t = new Thread(this);
this.actualizarHora();
t.start();
}

public void start(){
if(t==null){
t=new Thread(this);
t.start();
}
}

public void stop(){
if(t!=null){
t.stop();
t=null;
}
}

public void run(){
while(t!=null){
this.actualizarHora();

System.out.println("" +hora+ ":" +min+ ":" + seg);
try{
Thread.sleep(1000);
}catch (InterruptedException e){
e.printStackTrace();
}
}
}

public void actualizarHora() {
obj = new GregorianCalendar();
seg = obj.get(Calendar.SECOND);
min = obj.get(Calendar.MINUTE);
hora = obj.get(Calendar.HOUR_OF_DAY);
dia = obj.get(Calendar.DAY_OF_MONTH);
diaSemana = obj.get(Calendar.DAY_OF_WEEK);
mes = obj.get(Calendar.MONTH);
ano = obj.get(Calendar.YEAR);
return;
}
}


Eventos, Excepciones y errores

La siguiente parte de codigo realiza el evento de cuando al momento de hacer click en alguno de los botones, se abrira una nueva ventana la cual contendra la inforación de cada uno de los botones.

public class manejadorEvent implements ActionListener {

public void actionPerformed(ActionEvent e){
if(e.getSource()==boton){
setVisible(false);
final Interfaz ventana2 = new Interfaz();
ventana2.setVisible(true);
ventana2.setSize(400,300);
}else if (e.getSource()==boton2){
setVisible(false);
final Interfaz ventana3 = new Interfaz();
ventana3.setVisible(true);
ventana3.setSize(500,400);
}
}
}


En el caso de las excepciones, la que yo necesitare usar es la siguiente:
public void run(){
while(t!=null){
this.actualizarHora();

System.out.println("" +hora+ ":" +min+ ":" + seg);
try{
Thread.sleep(1000);
}catch (InterruptedException e){
e.printStackTrace();
}
}
}

Esta lo que hace es detener el hilo que creamos por mil milisegundos, lo que nos permitira imprimir correctamente la hora y esoo ocurre en la parte de try{}catch{}, y es por eso que necesitamos hacer esa excepción porque de lo contrario no nos funcionaria correctamente el hilo y al momento de querer compilarlo no veriamos nada ya que el proceso ocurre muy rapido y no se detiene.