Link Log

Una manera de perder el tiempo…

Archive for the ‘Java’ Category

Reloj en Java

with 13 comments

Actualización: http://www.israelsc.mx/programacion/java/reloj-en-java/

Bueno, después de mucho mucho tiempo, aquí traigo de nuevo otro programa en Java, este programa solo es un simple reloj analógico (ya saben, esos que tienen manecillas).

Bueno, acá el reloj resultante:

Reloj en Java

Reloj en Java

Acá el código:

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

public class RelojProyecto extends JFrame{
    public static void main(String[] args) {
        RelojProyecto app = new RelojProyecto();
        app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

    Reloj Cara;

    public RelojProyecto() {
	super( "Reloj Proyecto" );
	setVisible( true );
	setResizable( false );
        Container content = this.getContentPane();
        content.setLayout(new BorderLayout());
        Cara = new Reloj();
        content.add(Cara, BorderLayout.CENTER);
        this.pack();

        Cara.start();
    }
}

class Reloj extends JPanel {

    private int horas;
    private int minutos;
    private int segundos;

    private static final int   espacio = 10;
    private static final float dosPi = (float)(2.0 * Math.PI);
    private static final float tresPi = (float)(3.0 * Math.PI);
    private static final float rad = (float)(Math.PI / 30.0);

    private int tamano;
    private int xCentro;
    private int yCentro;
    private BufferedImage muestra;
    private javax.swing.Timer t;

    public Reloj() {
        this.setPreferredSize(new Dimension(300,300));
        t = new javax.swing.Timer(1000,
              new ActionListener() {
                  public void actionPerformed(ActionEvent e) {
                      update();
                  }
              });
    }

    public void update() {
        this.repaint();
    }

    public void start() {
        t.start();
    }
    public void stop() {
        t.stop();
    }
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        Graphics2D g2 = (Graphics2D)g;
        g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);

        int ancho = getWidth();
        int alto = getHeight();
        tamano = ((ancho < alto) ? ancho : alto) - 2*espacio;
        xCentro = tamano/2 + espacio;
        yCentro = tamano/2 + espacio;

        if (muestra == null
                || muestra.getWidth() != ancho
                || muestra.getHeight() != alto) {

            muestra = (BufferedImage)(this.createImage(ancho, alto));
            Graphics2D gc = muestra.createGraphics();
            gc.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
                                RenderingHints.VALUE_ANTIALIAS_ON);
            caraReloj(gc);
        }

        Calendar now = Calendar.getInstance();
        horas   = now.get(Calendar.HOUR);
        minutos = now.get(Calendar.MINUTE);
        segundos = now.get(Calendar.SECOND); 

        g2.drawImage(muestra, null, 0, 0);

        Manecillas(g);
    }

    private void caraReloj(Graphics g) {

        g.setColor(new Color(209, 234, 255));
        g.fillOval(espacio, espacio, tamano, tamano);
        g.setColor(Color.black);
        g.drawOval(espacio, espacio, tamano, tamano);

        for (int seg = 0; seg<60; seg++) {
            int inicio;
            if (seg%5 == 0) {
                inicio = tamano/2-10;
            } else {
                inicio = tamano/2-5;
            }
            diseno(g, xCentro, yCentro, rad*seg, inicio , tamano/2);
        }
    }

        private void Manecillas(Graphics g) {
        int radioSegundero = tamano/2;
        int radioMinutero = radioSegundero * 3/4;
        int radioHora   = radioSegundero/2;

        float fsegundos = segundos;
        float anguloSegundero = tresPi - (rad * fsegundos);
        diseno(g, xCentro, yCentro, anguloSegundero, 0, radioSegundero);

        float fminutos = (float)(minutos + fsegundos/60.0);
        float anguloMinutero = tresPi - (rad * fminutos);
        diseno(g, xCentro, yCentro, anguloMinutero, 0, radioMinutero);

        float fhours = (float)(horas + fminutos/60.0);
        float anguloHora = tresPi - (5 * rad * fhours);
        diseno(g, xCentro, yCentro, anguloHora, 0, radioHora);

	Font font = new Font("Arial", Font.BOLD, 16);
	g.setFont(font);
	g.drawString( "12", 140, 40 );
	g.drawString( "1", 205, 55 );
	g.drawString( "2", 245, 100 );
	g.drawString( "3", 265, 155 );
	g.drawString( "4", 245, 210 );
	g.drawString( "5", 205, 255 );
	g.drawString( "6", 145, 270 );
	g.drawString( "7", 90, 255 );
	g.drawString( "8", 45, 210 );
	g.drawString( "9", 25, 155 );
	g.drawString( "10", 45, 100 );
	g.drawString( "11", 80, 55 );
	Font font1 = new Font("Arial", Font.BOLD, 12);
	g.setFont(font1);
	g.drawString( "RELOJ", 130, 80 );
	g.drawString( "QUARTZ", 125, 220 );
    }

    private void diseno(Graphics g, int x, int y, double angulo, int minRadius, int maxRadius) {
        float sine   = (float)Math.sin(angulo);
        float cosine = (float)Math.cos(angulo);

        int dxmin = (int)(minRadius * sine);
        int dymin = (int)(minRadius * cosine);

        int dxmax = (int)(maxRadius * sine);
        int dymax = (int)(maxRadius * cosine);
        g.drawLine( x+dxmin, y+dymin, x+dxmax, y+dymax);
    }
}

Written by Link X

May 18, 2009 at 9:09 pm

Posted in Java

Tagged with ,

Java AWT

leave a comment »

Aquí esta un ejemplo muy pero muy sencillo de gráficos en Java.

El programa en si no hace nada, solo se muestra lo que se necesita para crear una ventana con botones (que no hacen nada…).

import java.awt.*;
public class ejemplo{
    public static void main( String args[] ){

       Button boton = new Button( "Soy un botón y el de abajo no hace nada" );
       Button boton2 = new Button( "El botón de arriba no hace nada" );
 
       Frame vent = new Frame( "Ejemplo Java AWT" );
       vent.setLayout(new FlowLayout());
       vent.add( boton );
       vent.add( boton2 );
       vent.setSize( 300, 150 );
       vent.setVisible( true );

       vent.addWindowListener(new Conclusion());
    }
}

Creo que todo el código se entiende, lo único que se puede llegar a no entender es la ultima linea (vent.addWindowsListener…), esta es una linea muy importante, ya que sin ella no cierra la ventana.

Written by Link X

June 18, 2008 at 11:13 pm

Posted in Java

Tagged with , , ,

Colas en Java

with 23 comments

Actualización: http://www.israelsc.mx/programacion/java/colas-en-java/

 

Ya puse unos ejemplos de listas y pilas, pero todavía hace falta el ejemplo de colas (no de esas, pero no estaría mal poner unos buenos ejemplos…).

Bueno, lo que hace este programa, es mostrar un menú para que el usuario seleccione lo que desee hacer, si insertar, retirar o mostrar la cola (de Java…).

import java.util.*;
public class Cola {
    public static void main( String args[] ){
       Scanner leer = new Scanner(System.in);

       colagenerica obj = new colagenerica();

       int op;
       int num;

       do{
          menu();
          op = leer.nextInt();

          switch(op){
              case 1:
                     System.out.println( "Numero a insertar" );
                     num = leer.nextInt();
                     if(obj.inscola(num)){
                        System.out.println( "fre"+obj.fre+"fin"+obj.fin+"aux"+obj.max );
                        System.out.println( "El numero "+num+" se inserto en la cola ["+obj.dret+"]" );
                        System.out.println();
                     }
                     else{
                          System.out.println( "Cola llena" );
                     }
                     break;
              case 2:
                    if(obj.retcola()){
                       System.out.println( "El dato retirado fue: "+obj.dret );
                    }
                    else{
                        System.out.println( "Cola vacia" );
                    }
                    break;
              case 3:
                    if(obj.fre==-1 && obj.fin==-1){
                       System.out.println( "Cola vacia" );
                    }
                    else{
                         System.out.println( "Estado de la cola:" );
                         for(int i=obj.fre; i<=obj.fin; i++){
                            System.out.print(obj.c[i]+" \t");
                         }
                         break;
                    }
          }
       }
       while(op != 4);
    }

    public static void menu(){
       System.out.println( "\t Menu para colas \n" );
       System.out.println( "1.- Insertar" );
       System.out.println( "2.- Retirar" );
       System.out.println( "3.- Estado" );
       System.out.println( "4.- Fin" );
       System.out.println( "\n Selecciona" );
    }
}

El programa usa métodos de la clase colagenerica, que puedes ver haciendo clic en mas

Read the rest of this entry »

Written by Link X

June 5, 2008 at 7:19 pm

Posted in Java

Tagged with , ,

Listas en Java (LinkedList)

with 9 comments

Actualización: http://www.israelsc.mx/programacion/java/listas-en-java-linkedlist/

 

De nuevo las listas, pero esta va vez con LinkedList, lo que permite que se agreguen o eliminen elementos en la lista al inicio o al final.

import java.util.*;
public class ListaLigada {

	public static void main (String args[]) {
		Scanner leer = new Scanner(System.in);

		int num;
		int op;

		LinkedList lista = new LinkedList();
		do{
			System.out.println( "\t Menú \t" );
			System.out.println( "Operaciones con listas" );
			System.out.println( "1.- Insertar al principio" );
			System.out.println( "2.- Insertar al final" );
			System.out.println( "3.- Borrar al principio" );
			System.out.println( "4.- Borrar al final" );
			System.out.println( "5.- Mostrar la lista" );
			System.out.println( "6.- Borrar toda la lista" );
			System.out.println( "7.- Salir" );
			System.out.println( "\n" );
			System.out.println( "Elija la operación que desee" );

			op = leer.nextInt();

			switch(op){
				case 1:
				      System.out.println( "Inserte numero" );
				      num = leer.nextInt();
				      lista.addFirst(num);
				      break;
				case 2:
				      System.out.println( "Inserte numero" );
				      num = leer.nextInt();
				      lista.addLast(num);
				      break;
				case 3:
				      System.out.println( "Se borrara el primer nodo" );
				      lista.removeFirst();
				      break;
				case 4:
				      System.out.println( "Se borrara el nodo final" );
				      lista.removeLast();
				      break;
				case 5:
				      System.out.println( "La lista es la siguiente" );
				      List lista2 = new ArrayList(lista);
                      Iterator it = lista2.iterator();
                      while (it.hasNext()){
                           System.out.println(it.next()+"");
                       }
                       break;
                case 6:
                      System.out.println( "Se borraran todos los elementos de la lista" );
                      lista.clear();
                      break;
                case 7:
                      System.out.println( "Al rato" );
                      break;
				}
			}

		while( op != 7 );
	}
}

Written by Link X

June 1, 2008 at 10:08 pm

Posted in Java

Tagged with , , ,

Listas en Java

with one comment

Actualización: http://www.israelsc.mx/programacion/java/listas-en-java/

 

Bueno, este programa hace lo mismo que el anterior, solo que esta hecho de la manera “tradicional”, es decir, sin usar ArrayList o LinkedList. Se podría decir que la lista esta hecha de forma manual.

Clase Nodo

public class NLista1{
    String nom;
    int calif1;
    int calif2;
    int calif3;
    double prom;

    NLista1 liga;
}

Programa

import java.util.*;
public class Lista1 {

	public static void main (String args[]) {
		Scanner leer = new Scanner(System.in);

		NLista1 inicio = null;
        NLista1 fin = null;
        NLista1 nuevo = null;
        NLista1 aux = null;

        int op;

        do{
        	nuevo = new NLista1();
        	System.out.println( "Ingrese el nombre del estudiante" );
        	nuevo.nom = leer.next();
        	System.out.println( "Ingrese la primer calificación" );
        	nuevo.calif1 = leer.nextInt();
        	System.out.println( "Ingrese la segunda calificación" );
        	nuevo.calif2 = leer.nextInt();
        	System.out.println( "Ingrese la tercer calificación" );
        	nuevo.calif3 = leer.nextInt();

        	if(inicio == null){
        		inicio = nuevo;
        		nuevo.liga = null;
        		}
        		else{
        			 fin.liga = nuevo;
        			 nuevo.liga = null;
        			}

        	fin = nuevo;
        	Promedio(nuevo);

        	System.out.println( "¿Desea ingresar otro estudiante?" );
        	System.out.println( "1.-Si \t 2.-No" );
        	op = leer.nextInt();
        	}

        	while(op != 2);

        	aux = inicio;

        	while(aux != null){
        		 System.out.println( "Nombre \t Promedio" );
        		 System.out.println( aux.nom + "\t" + aux.prom );
        		 aux = aux.liga;
        		}

	}

	public static double Promedio(NLista1 nuevo){
		 int suma = nuevo.calif1 + nuevo.calif2 + nuevo.calif3;
		 nuevo.prom = suma/3;
		 return nuevo.prom;
		}
}

Written by Link X

May 31, 2008 at 2:01 am

Posted in Java

Tagged with , ,

Listas en Java (ArrayList)

with 42 comments

Actualización: http://www.israelsc.mx/programacion/java/listas-en-java-arraylist/

 

Aquí esta un ejemplo de listas en Java utilizando ArrayList:

Lo que hace este programa, es que pide el nombre del alumno y tres calificaciones para luego calcular su promedio. Se puede agregar cualquier cantidad de elementos a la lista.

public class NodoLista4{
    String nom;
    int calif1;
    int calif2;
    int calif3;
}
import java.util.*;
public class ListaAlumnos{

       static double prom;
   public static void main( String args[] ){
     Scanner leer = new Scanner(System.in);

        NodoLista4 nodo = new NodoLista4();
        int op;

        ArrayList lista = new ArrayList();
     do{
        System.out.println( "Ingrese el nombre del alumno:" );
        nodo.nom = leer.next();
        System.out.println( "Ingrese la primera calificación:" );
        nodo.calif1 = leer.nextInt();
        System.out.println( "Ingrese la segunda calificación:" );
        nodo.calif2 = leer.nextInt();
        System.out.println( "Ingrese la tercera calificación:" );
        nodo.calif3 = leer.nextInt();

        lista.add("Nombre del alumno:\n"+nodo.nom);
        lista.add("Calificación 1:\n"+nodo.calif1);
        lista.add("Calificación 2:\n"+nodo.calif2);
        lista.add("Calificación 3\n"+nodo.calif3);

        promedio(nodo.calif1, nodo.calif2, nodo.calif3);

        lista.add("Su promedio es:\n"+prom);

        System.out.println( "¿Desea ingresar otro alumno?" );
        System.out.println( "1.-Si\t 2.-No" );
        op = leer.nextInt();
     }
      while(op != 2);
        List lista2 = new ArrayList(lista);
        Iterator it = lista2.iterator();
       while (it.hasNext()){
            System.out.println(it.next()+"");
         }
   }

      private static double promedio(int calif1, int calif2, int calif3){
          int suma = calif1 + calif2 + calif3;
          prom = suma/3;
          return prom;
      }
}

P.D.: No es necesario hacer el NodoLista4, esas variables se pueden crear en el programa, pero me acostumbre a hacer eso…

Written by Link X

May 27, 2008 at 12:28 pm

Posted in Java

Tagged with , , ,

Java Infijo a Posfijo

with 8 comments

Bueno, ya conociendo el algoritmo, se puede hacer en Java:

class converpostultima{	
 public static void main (String args[])
  {
   
    String expr = new String("");
    String exprpost = new String("");
    char ch;
    int max;
    System.out.print("Dame la Expresion en Infijo: ");
    expr =Leer.dato();
    max=expr.length();
    operapilaschar obj1 = new operapilaschar(max);
    System.out.println();
    System.out.println();
    System.out.println("La Expresion en Postfijo es :");
    obj1.push('('); // inserta '(' a la PILA
    expr+=')'; // inserta ')' al final de Q
    for (int i=0;i=precedencia(ch) &amp;&amp; obj1.pila[obj1.tope]!='('))
 	  	   {
 	  	    obj1.pop();
 	  	    exprpost+=obj1.dret;
 	  	   } 
 	  	   obj1.push(ch);
                break;               
 	case ')': while (obj1.pila[obj1.tope] != '(')
 	          {
 	  	    obj1.pop();
 	  	    exprpost+=obj1.dret;
 	  	  }
 	  	   obj1.pop();
 	  	  break;       
 	  	  default : exprpost+=ch;
    } 	       	    	                     
 	  	  	 
  } 	 	   
  while (!(obj1.pila_Vacia(obj1.tope)))
    {
      obj1.pop();	        
      if (obj1.dret!= '(')
      exprpost+=obj1.dret;
    } 	 
  System.out.println(exprpost);     
} 	
 
 public static int precedencia(char ch)
 {
 	int aux = 0;
 	switch (ch)
 	 {
 	 	case '^' : aux = 4;
 	 	           break;
 	 	case '*' : case '/' : aux = 3;
 	 	           break;
 	 	case '+' : case '-' : aux = 2;
 	 	           break;
 	 	case '(' : aux = 1;
 	 	           break;
 	 }
 	 return aux;	
 }
}

Cabe aclarar que el código no lo hice yo, si no que me lo pasaron para entender el algoritmo.

Read the rest of this entry »

Written by Link X

April 29, 2008 at 11:48 pm

Posted in Java

Tagged with , , ,