Mostrando entradas con la etiqueta programacion III. Mostrar todas las entradas
Mostrando entradas con la etiqueta programacion III. Mostrar todas las entradas

martes, 11 de febrero de 2014

Pasar texto de un JTextField a una JList

Hola amig@s ahora les mostrare como pasar el texto de un JTextField a una JList con tan solo unas cuantas lineas y sin complicaciones.

Captura:


lunes, 2 de septiembre de 2013

Mover Imagen Utilizando Hilos (Threads) en Java

Hola amig@s en esta ocasión les mostrare como mover 2 imagenes una con las teclas direccionales del teclado y la otra arrastrarla con el ratón, además de hacer un contador que nos muestre cuantos minutos y segundos la aplicaron ha estado activa, también reproducir un archivo MID todo esto con Hilos (Threads) para ello utilizaremos un IDE como entorno de programacion en mi caso utilizare netbeans.

Imagenes:




dentro de nuestro proyecto crearemos un JFrame form y en modo diseñador utilizaremos 4 JLabels, 1 JPanel, 1 JTextField y JButton.

los re-nombramos para poderlos identificar mas facilmente, yo los llame así:


JLabel jLabel2;//esta sera la etiqueta del JTextField
JPanel jPanel1;
JButton jbmover;//mientras no se presione no se podrán mover las imágenes
JLabel jlbola;//este JLabel  sera la imagen que moveremos con el ratón
JLabel jlimagen1;//este JLabel  sera la imagen que moveremos con el teclado
JLabel jlimagen2;//este JLabel  sera la imagen de fondo
JTextField jttiempo;//aqui mostraremos el tiempo transcurrido

ahora cambiamos la vista de diseñador a código y dentro de la clase colocamos lo siguiente:

 Sonido miHilo;
    Thread miThread;
    boolean band;
    HiloTiempo otrohilo=new HiloTiempo();

clase interna

private class HiloTiempo extends Thread {

        @Override
        public void run() {
            int contador = 0,min=0;
            while (true) {              
                    jttiempo.setText("0"+ min+":"+ contador);
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException ex) {
                    Logger.getLogger(Animacion.class.getName()).log(Level.SEVERE, null, ex);
                }
                contador++;
                if(contador==60){
                    contador=0;
                    min++;
                }
            }
        }
    }


dentro de nuestro constructor colocamos esto:

    miHilo=new Sonido();
    miThread = new Thread(miHilo);
    miThread.start(); 
    otrohilo.start();

al botón jbmover le colocamos 2 eventos:

1- KeyPressed.
2- ActionPerformed.

debería quedar algo así:

 private void jbmoverKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_jbmoverKeyPressed
        
        if(band==true){
            moverImagen(evt);
        }
    }//GEN-LAST:event_jbmoverKeyPressed

    private void jbmoverActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jbmoverActionPerformed
         band=true;
    }//GEN-LAST:event_jbmoverActionPerformed

al JLabel jlbola le colocaremos el evento: MouseDragged.

debería quedar algo así:

private void jlbolaMouseDragged(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jlbolaMouseDragged
        if(band==true){
            moverImagen2(evt);
        }
    }//GEN-LAST:event_jlbolaMouseDragged

también declararemos el método para mover la imagen con el ratón:

public void moverImagen2(java.awt.event.MouseEvent evento) {
         jlbola.setLocation(jlbola.getX() + evento.getX() - jlbola.getWidth()/2 , jlbola.getY() + evento.getY() - jlbola.getHeight()/2);          

}

estos son los los métodos para mover la imagen con el teclado:

 private void moverImagen(java.awt.event.KeyEvent evt) {
        switch (evt.getKeyCode()) {
            case KeyEvent.VK_UP:
                moverArriba();
                break;
            case KeyEvent.VK_DOWN:
                moverAbajo();
                break;
            case KeyEvent.VK_LEFT:
                moverIzq();
                break;
            case KeyEvent.VK_RIGHT:
                moverDer();
                break;
            default:
                System.out.println("No valida");
        }
    }

    private void moverArriba() {
        jlimagen1.setLocation(jlimagen1.getX(), jlimagen1.getY() - 10);
    }

    private void moverAbajo() {
        jlimagen1.setLocation(jlimagen1.getX(), jlimagen1.getY() + 10);
    }

    private void moverIzq() {
        jlimagen1.setLocation(jlimagen1.getX() - 10, jlimagen1.getY());
    }

    private void moverDer() {
        jlimagen1.setLocation(jlimagen1.getX() + 10, jlimagen1.getY());
    }

ahora crearemos otra clase para el sonido

import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.sound.midi.InvalidMidiDataException;
import org.jfugue.Player;

public class Sonido implements Runnable {

    public void run() {
        Player player = new Player();
        File midi=new File("lilium_intro.mid");
         while (true) {
            try {
                    player.playMidiDirectly(midi);
            } catch (IOException ex) {
                Logger.getLogger(Sonido.class.getName()).log(Level.SEVERE, null, ex);
            } catch (InvalidMidiDataException ex) {
                Logger.getLogger(Sonido.class.getName()).log(Level.SEVERE, null, ex);
            }
         }
    }
}

descarga el proyecto desde aquí.

descarga la librería jfugue desde aquí o visita su pagina oficial.

viernes, 19 de julio de 2013

Dibujar un cuadrado, un triángulo y un circulo en applet

Hola amig@s en esta entrega les mostrare como dibujar un cuadrado, un triángulo y un circulo en applet cada uno se dibujara al presionar el botón correspondiente a dicha figura.


Capturas:




Código:

import java.applet.Applet;
import java.awt.Button;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

/**
 *
 * @author MARIO
 */
public class Figuras extends Applet implements ActionListener {

    Button bt1, bt2, bt3;
    int indice;
    final Color[] colores = {Color.red, Color.blue, Color.orange};

    public void init() {
        setBackground(Color.yellow);
        bt1 = new Button("Cuadrado");
        bt2 = new Button("Triangulo");
        bt3 = new Button("Circulo");
        bt1.setBackground(Color.red);
        bt1.setForeground(Color.green);
        bt1.addActionListener(this);
        bt2.setBackground(Color.blue);
        bt2.setForeground(Color.white);
        bt2.addActionListener(this);
        bt3.setBackground(Color.orange);
        bt3.setForeground(Color.MAGENTA);
        bt3.addActionListener(this);
        add(bt1);
        add(bt2);
        add(bt3);
    }

    public void paint(Graphics g) {
        g.setColor(colores[indice]);
        switch (indice) {
            case 0:
                g.fillRect(40, 40, 40, 40);
                break;
            case 1:
                int [] x = new int [4];
  x [0] = 5; x [1] = 70; x [2] = 70; x [3] = 5;
  int [] y = new int [4];
  y [0] = 70; y [1] = 5; y [2] = 70; y [3] = 70;
  g.drawPolygon (x, y, 4);
                break;
            case 2:
                g.fillOval(120, 96, 40, 40);
                break;
        }
    }

    public void actionPerformed(ActionEvent e) {
        Object boton = e.getSource();
        if (boton.equals(bt1)) {
            indice = 0;
        } else if (boton.equals(bt2)) {
            indice = 1;
        } else {
            indice = 2;
        }
        repaint();
    }
}


Puedes descargar el código desde aquí.

jueves, 18 de julio de 2013

Dibujar Cara en Applets Java

Hola amig@s en esta nueva entrega les mostrare como crear un applet que dibuje una carita y al presionar un botón cambiar el color de todo lo dibujado

Captura:



Código:

import java.applet.Applet;
import java.awt.Button;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

/**
 * @(#)Cara.java
 *
 * Cara Applet application
 *
 * @author Alexander
 * @version 1.00 2013/7/18
 */
public class Cara extends Applet implements ActionListener {

    Button btn = new Button("Cambiar Color");
    int indice = 1;

    public void init() {
        add(btn);
        btn.addActionListener(this);
    }

    public void paint(Graphics g) {
        if (indice == 1) {
            btn.setBackground(Color.black);
            btn.setForeground(Color.lightGray);
            setBackground(Color.red);
            g.fillOval(150, 150, 120, 120);
            g.setColor(Color.green);
            g.fillOval(170, 170, 20, 20);
            g.fillOval(220, 170, 20, 20);
            g.drawLine(200, 175, 200, 220);
            g.drawArc(180, 190, 50, 50, 180, 180);
        } else {
            btn.setBackground(Color.white);
            btn.setForeground(Color.blue);
            setBackground(Color.blue);
            g.setColor(Color.pink);
            g.fillOval(150, 150, 120, 120);
            g.setColor(Color.yellow);
            g.fillOval(170, 170, 20, 20);
            g.fillOval(220, 170, 20, 20);
            g.drawLine(200, 175, 200, 220);
            g.drawArc(180, 190, 50, 50, 180, 180);
        }
    }

    public void actionPerformed(ActionEvent e) {
        Object boton = e.getSource();
        if (boton.equals(btn)) {
            if (indice != 2) {
                indice = 2;
            } else {
                indice = 1;
            }
        }
        repaint();
    }
}


Descarga el código desde aquí.

sábado, 13 de julio de 2013

Mini Paint en Java

Mini Paint en Java

Hola amigos hoy les enseñare como programar un mini Paint basico en java utilizando Netbeans 7.2.1 hasta el momento puede hacer lineas circulos, elipses, cuadros, rectangulos tambien cuenta con una opcion de trazo libre

Pasos:

Creamos nuestro proyecto



Ahora extendemos nuestra clase Paint con JFrame
y declaramos las siguientes variables


Creamos el  constructor de nuestra clase e inicializamos nuestras variables



hasta ahora solo hemos inicializado nuestra variables ahora crearemos una nueva clase llamada Lienzo y para que utilizaremos esta clase pues dicha clase sera la encargada de mostrar lo que estemos dibujando a su vez sera quien escuchara las acciones de nuestro mouse para ello extenderemos nuestra clase Lienzo con la clase Canvas e implementaremos MouseListener, MouseMotionListener.


Ahora crearemos nuestro constructor el cual recibirá como parámetro el objeto Paint

E implementamos los siguientes métodos los cuales se encargan de manejar las distintas acciones del mouse y los ultimos 3 métodos son paint() seria nuestra funcion que dibujaria los distintos trazos en nuestro lienzo, update() actualizaria nuestros trazos sin borrar los anteriores y por ultimo nuevoColor() tomaria el nuevo color a utilizar




Ahora crearemos 4 nuevas clases las cuales estaran encargadas de manejar las acciones de algunos componentes como los radiobuttons, el boton limpiar y los slider estos ultimos se utilizaran en las opciones de circulo-elipse o cuadro-rectagulo dependiendo de los valores que les demos asi seran las formas a mostrar

Clase ManejadorBotonLimpiar


Clase ManejadorRadioButton


Clase SelectorAlto


Clase SelectorAncho



Si logran apreciar las clases de SelectorAlto y SelectorAncho son iguales la unica diferencia es la variable ancho y alto respectivamente nos vamos a nuestra clase Lienzo y añadimos las acciones correspondientes dentro del constructor de esta manera.



Ahora lo que falta es terminar de darle las respectivas acciones a los elementos de la clase Paint y dentro de nuestro constructor

Acciones a los radioButtons solo añadimos:
rbColores[i].addActionListener(new ManejadorRadioButton(this));  de esta manera:


Accion del boton dibujar 


Accion del boton cambiar color al presionar dicho boton se mostrara un JColorShooser (un seleccionador de color)


Accion del comboBox


Accion del boton Salir


al final de nuestro constructor colocamos lo siguiente

La primera linea hace que nuestra ventana se muestre de forma expandida.
Segunda es para establecer la decoracion.
Tercera linea definimos que estilo queremos para nuestra venana.
Cuarta linea definimos la accion del boton cerrar de nuestra ventana.
Quinta linea establecemos que no se pueda cambiar el tamaño de nuestra ventana.



Puedes descargar todo el proyecto desde aqui.