domingo, 22 de septiembre de 2013

Programando en Java ... no. 5

"Mientras tanto el programador trata de entender el mundo a través de código, olvidando que puede hacerlo con un simple vistazo"


1. Creando nuestras propias excepciones, creamos una clase llamada "MyNumberException" que extiende de la clase Exception, si el número es mayor a 500 o menor a 0 ocurrirá la excepción

public class Codemonkey{
   
     static void setValor(int x)throws MyNumberException{
         if(x>500 || x<0)
             throw new MyNumberException("debes introducir un valor menor a 500 y mayor a 0");
          // se ejecutará si el número es mayor a 500 o menor a 0
     }
    public static void main(String[] args)throws MyNumberException{
        System.out.println("    c0D3m0Nk3Y    ");
       try{
            setValor(501);
        }catch(MyNumberException me){
           System.err.println("Ha ocurrido un error: "+me.getMessage());//mostramos el mensaje
        }finally{
             System.out.println("finally: esto siempre se ejecutara");
        }
        System.out.println("esto esta fuera del try-catch-finally");
    }  
}

class MyNumberException  extends Exception{
    public  MyNumberException(String message){
         super(message);
    }
}
Para ejecutar es necesario habilitar las "assertions" en java con "-ea":
javac -g Codemokey.java
java -ea Codemonkey

2. En este ejemplo se usa la clase HashSet para insertar un valor de tipo "Persona", si el valor es un duplicado no se podrá insertar.

import java.util.HashSet;
import java.util.Objects;


public class Codemonkey {
    public static void main(String[] args){
     HashSet persons=new HashSet();
     persons.add(new Persona("Laura",31));
     persons.add(new Persona("Hortencia",21));
     persons.add(new Persona("Laura",31));//duplicado
     persons.ass(new Persona("Hortencia",39)); //este valor si se agrega
   
     for(Object p: persons){
         Persona per=(Persona)p;
      System.out.println(per.getNombre()+"  - "+per.getEdad());
     }
   
     System.out.println(persons.toString());
   
    }
}

//aquí creamos la clase Persona
class Persona{
    private String nombre;
    private int edad;

    public Persona(String nombre, int edad) {
        this.nombre = nombre;
        this.edad = edad;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public void setEdad(int edad) {
        this.edad = edad;
    }

    public String getNombre() {
        return nombre;
    }

    public int getEdad() {
        return edad;
    }
   
    @Override
    public String toString(){
        return "nombre: "+nombre+"  edad: " +edad;
    }

    @Override
    public int hashCode() {
        int hash = 3;
        hash = 79 * hash + this.edad;
        return hash;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final Persona other = (Persona) obj;
        if (!Objects.equals(this.nombre, other.nombre)) {
            return false;
        }
        if (this.edad != other.edad) {
            return false;
        }
        return true;
    }
}


3. Ejecutando un hilo en java swing
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;



public class Codemonkey{
    public static void main(String[] args) {
        SwingUtilities.invokeLater( new Runnable() {
            @Override
            public void run() {
                new Ventana();
            }
        });
    }
}

class Ventana extends JFrame{
    private JPanel panel;
    private JButton btnSalir,btnActiva;

    Ventana(){
        setTitle("Iniciando hilos");
        setSize(450,300);
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        add(getGUI());
    }

    public JPanel getGUI(){
        panel=new JPanel();
        panel.setVisible(true);
        panel.setSize(700,400);
        panel.setBackground(Color.black);
        panel.add(new JLabel("<html><h1><font color='white'>Ejecutando un hilo</font></h1></html>"));
        panel.add(getBtnActiva());
        panel.add(getBtnSalir());
        return panel;
    }


    public JButton getBtnActiva(){
        btnActiva=new JButton("<html><font color='white'>Iniciar hilo</font></html>",new ImageIcon("mono.jpg"));
        btnActiva.setToolTipText("quitar ventana ...");
        btnActiva.setBackground(Color.blue);
        btnActiva.addActionListener(new ActionListener(){
               public void actionPerformed(ActionEvent e){
                   
                    new Thread(new Runnable(){
                        public void run(){
                            int cont=0;
                            System.out.println("Inicia hilo");
                            while(cont<4){
                            try{
                                Thread.sleep(1000);
                               System.out.println("Hola no. "+(cont+1));
                            cont++;
                        }catch(InterruptedException ex){
                            System.err.println(ex.toString());
                        }
                        System.out.println("Termina hilo");

                           }
                        }
                    }).start();


           }
       });

        return btnActiva;
    }

    public JButton getBtnSalir(){
        btnSalir=new JButton("<html><font color='white'>Salir</font></html>",new ImageIcon("mono.jpg"));
        btnSalir.setToolTipText("quitar ventana ...");
        btnSalir.setBackground(Color.red);
        btnSalir.addActionListener(new ActionListener(){
               public void actionPerformed(ActionEvent e){
                    System.exit(0);
           }
       });

        return btnSalir;
    }
}




No hay comentarios:

Publicar un comentario