Una forma sencilla y rápida de aprender JAVA, observando y deduciendo cómo se comporta el lenguaje a través de ejemplos prácticos.

Archivo del blog

jueves, 22 de abril de 2010

Creación de una clase.

codigo1: (Main.java)

import javax.swing.*;
public class Main extends JFrame {
public static void main(String[] args) {
IniciarComponentes objeto = new IniciarComponentes();
String cadena = objeto.TXsortida.getText();
System.out.println(cadena);
}
}


codigo2: (IniciarComponentes.java)

import javax.swing.*;
import java.awt.*;
public class IniciarComponentes {
public TextField TXsortida = new TextField("Hola");
public IniciarComponentes() {
//Crear ventana
JFrame ventana = new JFrame("Jformula");
ventana.setSize(400,300);
ventana.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ventana.setLayout(null);
ventana.setVisible(true);
//Insertar un TextField
TXsortida.setBounds(100, 150, 220,20);
ventana.add(TXsortida);
}
}

miércoles, 24 de marzo de 2010

Uso de tablas JTable. Crear, añadir y modificar.

Código Java (Main.java):

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

public class Main extends JFrame {

    public Main() {

        String[] columnNames = {"Nombre", "Años", "Apto",};
        Object[][] datos = {
            {"Juan", 25, false},
            {"Sonia", 33, true},
            {"Pedro", 42, false}};

        DefaultTableModel dtm = new DefaultTableModel(datos, columnNames);
        final JTable table = new JTable(dtm);

        // Agregar nueva columna
        String[] columnaNueva1 = {"vago", "diestro", "normal",};
        dtm.addColumn("Tipo", columnaNueva1);

        // Agregar nueva fila
        Object[] newRow = {"Maria", 55, false};
        dtm.addRow(newRow);

        // Modificar celda especifica
        dtm.setValueAt("XXX", 3, 3); // Row/Col

        table.setPreferredScrollableViewportSize(new Dimension(250, 100));
        JScrollPane scrollPane = new JScrollPane(table);
        getContentPane().add(scrollPane, BorderLayout.CENTER);       
        addWindowListener(new WindowAdapter() {           
            public void windowClosing(WindowEvent e) {
                System.exit(0);               
            }
        });
       
    }

    public static void main(String[] args) {
        Main frame = new Main();
        frame.pack();
        frame.setVisible(true);
    }
   
}



Resultado:












jueves, 18 de marzo de 2010

Ejecutar 2 procedimientos a la vez: Threads

Codigo:

  1. public class Main {
  2. ..public static void main(String[] args) {
  3. ....new Tarea("Tarea1").start();
  4. ....new Tarea("Tarea2").start();
  5. ..}
  6. }
  7. class Tarea extends Thread {
  8. ..public Tarea(String str) {
  9. ....super(str);
  10. ..}
  11. @Override // Quita el aviso del Warning
  12. ..public void run() {
  13. ....int tar = 0;
  14. ....if (getName().equals("Tarea1")) tar = 1;
  15. ....if (getName().equals("Tarea2")) tar = 2;
  16. ....switch (tar) {
  17. ......case 1: // Tarea 1
  18. ........for (int a = 0; a < 5; a++){
  19. ..........System.out.println(getName()+": "+a);
  20. ........}
  21. ........break;
  22. ......case 2: // Tarea 2
  23. ........for (int b = 0; b < 5; b++){
  24. ..........System.out.println(getName()+": "+b);
  25. ........}
  26. ....}
  27. ..}
  28. }

Resultado:

  • Tarea1: 0
  • Tarea1: 1
  • Tarea1: 2
  • Tarea2: 0
  • Tarea2: 1
  • Tarea2: 2
  • Tarea2: 3
  • Tarea2: 4
  • Tarea1: 3
  • Tarea1: 4

Nota: Las 2 tareas se ejecutan al mismo tiempo, por eso en el resultado puede aparecer mezclados los resultados de la Tarea1 con el de la Tarea2.

martes, 16 de marzo de 2010

Uso de barra de progreso: JProgressBar.

Codigo:
  1. import javax.swing.*;
  2. import java.awt.*;
  3. import java.awt.event.*;
  4. public class Main extends JFrame {
  5. ..FlowLayout v = new FlowLayout();
  6. ..JButton boton = new JButton("Aumentar nivel barra de progreso");
  7. ..JProgressBar barra = new JProgressBar(0,10); //min,max
  8. ..int i = 0;
  9. ..public Main() {
  10. ....add(boton);
  11. ....add(barra);
  12. ....getContentPane().setLayout(v);
  13. ....setDefaultCloseOperation(EXIT_ON_CLOSE);
  14. ....setSize(300,150);
  15. ....setVisible(true);
  16. // Evento al pulsar boton
  17. ....boton.addActionListener (new ActionListener(){
  18. ......public void actionPerformed(ActionEvent e)
  19. ......{
  20. ........i = i + 1;
  21. ........barra.setValue(i);
  22. ......}
  23. ....});
  24. ..}
  25. ..public static void main(String[] args) { new Main(); }
  26. }
Resultado:



Uso de StringBuffer. reverse (invertir strings).

Codigo:
  1. import javax.swing.*;
  2. import java.awt.*;
  3. import java.awt.event.*;
  4. public class Main extends JFrame {
  5. .FlowLayout v = new FlowLayout();
  6. .JButton boton1 = new JButton(" Revertir ");
  7. .TextArea text = new TextArea("", 3, 30, 3);//row,col,nullScroll
  8. .public Main() {
  9. ...text.setText("Hola mundo");
  10. ...add(text);
  11. ...add(boton1);
  12. ...getContentPane().setLayout(v);
  13. ...setDefaultCloseOperation(EXIT_ON_CLOSE);
  14. ...setSize(300,150);
  15. ...setVisible(true);
  16. //Event al pulsar boton
  17. ...boton1.addActionListener (new ActionListener(){
  18. ....public void actionPerformed(ActionEvent e){
  19. .....StringBuffer str1 = new StringBuffer(text.getText());
  20. ........text.setText(str1.reverse().toString());
  21. ......}
  22. ....});
  23. ..}
  24. ..public static void main(String[] args) { new Main(); }
  25. }
Resultado:

viernes, 12 de marzo de 2010

Función con paso de parametros alfanumericos.

Codigo:
  1. public class Main{
  2. ..public static String texto (String a, String b)
  3. ..{
  4. ....return "resultado: " + a + b;
  5. ..}
  6. ..public static void main(String[] args)
  7. ..{
  8. ....String text1;
  9. ....text1 = texto("palabra1 ", "palabra2 ");
  10. ....System.out.println(text1);
  11. ..}
  12. }
Resultado:
  • resultado: palabra1 palabra2

miércoles, 3 de marzo de 2010

Grabación de sonido desde el micrófono.

Este código graba audio desde micrófono durante 10 segundos y lo guarda en un archivo de audio llamado "grabacion.wav".


Código Java (GrabarSonido.java):

package grabarsonido;

import java.io.File;
import javax.sound.sampled.AudioFileFormat;
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.DataLine;
import javax.sound.sampled.TargetDataLine;

public class GrabarSonido {

    AudioFileFormat.Type aFF_T = AudioFileFormat.Type.WAVE;
    AudioFormat aF = new AudioFormat(8000.0F, 16, 1, true, false);
    TargetDataLine tD;
    File f = new File("grabacion.wav");

    public GrabarSonido() {
        try {
            DataLine.Info dLI = new DataLine.Info(TargetDataLine.class, aF);
            tD = (TargetDataLine) AudioSystem.getLine(dLI);
            new CapThread().start();
            System.out.println("Grabando durante 10s...");
            Thread.sleep(10000);
            tD.close();
        } catch (Exception e) { }
    }

    class CapThread extends Thread {
        @Override
        public void run() {
            try {
                tD.open(aF);
                tD.start();
                AudioSystem.write(new AudioInputStream(tD), aFF_T, f);
            } catch (Exception e) { }
        }
    }

    public static void main(String[] args) {
        new GrabarSonido();
    }

}


Resultado:

run:
Grabando durante 10s...
BUILD SUCCESSFUL (total time: 0 seconds)

martes, 2 de marzo de 2010

Reproducción de sonidos wav:

Nota: Antes hay que crear una ruta y añadir el archivo de audio, quedando de la siguiente manera: "c:\sonidos\sonido1.wav"


Código Java:

import java.io.File;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;

public class Sonido {
   public static void main(String[] args) {
      try {
         Clip sonido = AudioSystem.getClip();
         File a = new File("c:\\sonidos\\sonido1.wav");
         sonido.open(AudioSystem.getAudioInputStream(a));
         sonido.start();
         System.out.println("Reproduciendo 10s. de sonido...");
         Thread.sleep(10000); // 10000 milisegundos (10 segundos)
         sonido.close();
      } catch (Exception tipoError) {
         System.out.println("" + tipoError);
      }
   }
}


Resultado:

    Reproduciendo 10s. de sonido...


lunes, 1 de marzo de 2010

Crear grupo de botones: ButtonGroup.

Código java:

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

public class Main extends JFrame {

    JPanel panel = new JPanel();
    ButtonGroup grupo = new ButtonGroup();
    JRadioButton op1 = new JRadioButton("Opción 1");
    JRadioButton op2 = new JRadioButton("Opción 2");
    JRadioButton op3 = new JRadioButton("Opción 3");

    // constructor
    public Main() {
        grupo.add(op1);
        grupo.add(op2);
        grupo.add(op3);
        panel.add(op1);
        panel.add(op2);
        panel.add(op3);
        getContentPane().add(panel);
        getContentPane().setLayout(new FlowLayout());
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setSize(300, 120);
        setVisible(true);
    }

    public static void main(String[] args) {
        new Main();
    }
  
}



Resultado:


 

Ejecutar evento al pulsar el botón.

Código:

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

public class ventana extends JFrame {

    JButton boton1 = new JButton("Pulsar aqui para cerrar ventana");
    FlowLayout ventana1 = new FlowLayout();

    public Main() {
        boton1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                System.exit(0);
            }
        });
        getContentPane().add(boton1);
        getContentPane().setLayout(ventana1);
        setSize(250, 150);
        setTitle("Titulo ventana");
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setVisible(true);
    }

    public static void main(String[] args) {
        new Main();
    }


}

Resultado:











Nota: Al pulsar sobre el botón activa un evento, en este caso cierra la aplicación.

 

sábado, 27 de febrero de 2010

Añadir botón a la ventana: JButton.

Codigo:
  1. import javax.swing.*;
  2. import java.awt.*;
  3. public class ventana extends JFrame {
  4. ..JButton boton1 = new JButton("Boton");
  5. ..FlowLayout ventana1 = new FlowLayout();
  6. ..public ventana() {
  7. ....getContentPane().add(boton1);
  8. ....getContentPane().setLayout(ventana1);
  9. ....setSize(250,150);
  10. ....setTitle("Titulo ventana");
  11. ....setDefaultCloseOperation(EXIT_ON_CLOSE);
  12. ....setVisible(true);
  13. ..}
  14. ..public static void main(String[] args) {
  15. ....new ventana();
  16. ..}
  17. }
Resultado:

jueves, 25 de febrero de 2010

Creación ventana de windows.

Codigo:
  1. import javax.swing.*;
  2. import java.awt.*;
  3. public class Ventana extends JFrame {
  4. ..public Ventana() {
  5. ....Container c = getContentPane();
  6. ....c.setLayout(new FlowLayout());
  7. ....this.setSize(250,150);
  8. ....this.setTitle("Titulo ventana");
  9. ....this.setDefaultCloseOperation(EXIT_ON_CLOSE);
  10. ....this.setVisible(true);
  11. ..}
  12. ..public static void main (String [] args) {
  13. ....Ventana v = new Ventana();
  14. ..}
  15. }

Resultado:

Recursividad: Cálculo factorial.

Codigo:
  1. public class Main {
  2. ..static int factorial (int numero) {
  3. ....if (numero == 0) return 1;
  4. ....else return numero * factorial(numero-1);
  5. ..}
  6. ..public static void main(String[] args) {
  7. ....System.out.println("Factorial de 5 es: " + factorial(5));
  8. ..}
  9. }
Resultado:
  • Factorial de 5 es: 120

miércoles, 24 de febrero de 2010

Creación de un objeto.

Código:

public class Main {

    static class Persona {
        String nombre;
        int edad;
    }

    public static void main(String[] args) {
        Persona per = new Persona();
        Persona per2 = new Persona();
        per.nombre = "Pepe";
        per.edad = 21;
        per2.nombre = "Maria";
        per2.edad = 15;
        System.out.println(per.nombre);
        System.out.println(per.edad);
        System.out.println(per2.nombre);
        System.out.println(per2.edad);
    }

}


Resultado:

run:
Pepe
21
Maria
15
BUILD SUCCESSFUL (total time: 0 seconds)

viernes, 19 de febrero de 2010

Funciones con paso de parametros.

Codigo:
  1. public class Main {
  2. ..static int suma (int a, int b) {
  3. ....int suma;
  4. ....suma = a + b;
  5. ....return suma;
  6. ..}
  7. ..public static void main(String[] args) {
  8. ....int sumador;
  9. ....sumador = suma(1, 3);
  10. ....System.out.println(sumador);
  11. ..}
  12. }

Codigo compactado:

  1. public class Main {
  2. ..static int suma (int a, int b) {
  3. ....return a + b;
  4. ..}
  5. ..public static void main(String[] args) {
  6. ....System.out.println(suma(1, 3));
  7. ..}
  8. }

Resultado:

  • 4

Enumeraciones: enum.

Codigo:
  1. public class Main {
  2. ..enum Semana {LUNES, MARTES, MIERCOLES, JUEVES, VIERNES};
  3. ..public static void main(String[] args) {
  4. ....Semana dia;
  5. ....dia = Semana.VIERNES;
  6. ....System.out.println(dia);
  7. ..}
  8. }
Resultado:
  • VIERNES

jueves, 18 de febrero de 2010

Lectura desde teclado: InputStreamReader y BufferedReader.

Codigo:

import java.io.*;
public class LecturaTeclado {

..public static void main(String[] args) {
....try {
......InputStreamReader a = new InputStreamReader(System.in);
......BufferedReader b = new BufferedReader(a);
......System.out.println("Escribe tu nombre: ");
......String nombre = b.readLine();
......System.out.println("Hola " + nombre);
....}
....catch(Exception c) {
......System.err.println(c);
....}
..}
}

Resultado:
  • Escribe tu nombre:
  • pedro - Nombre escrito por el usuario en tiempo de ejecución.
  • Hola pedro

miércoles, 17 de febrero de 2010

Gestión errores: try-catch-finally

Codigo:
  1. public class GestionErrores {
  2. ..public static void main(String[] args) {
  3. ....try{
  4. ......int operacion = 3 / 0;
  5. ......System.out.println("Operación sin errores.");
  6. ....}
  7. ....catch(Exception ex){
  8. ......System.out.println("Operación con el siguiente error:");
  9. ......System.err.println(ex);
  10. ....}
  11. ....finally {
  12. ......System.out.println("Finalizando aplicación...");
  13. ....}
  14. ..}
  15. }

Resultado:
  • Operación con el siguiente error:
  • java.lang.ArithmeticException: / by zero
  • Finalizando aplicación...

Bucles: while.

Codigo:

  • public class BucleWhile {
  • ..public static void main(String[] args) {
  • ....int i = 0;
  • ....while (i < 4) {
  • ......System.out.println(i);
  • ......i++;
  • ....}
  • ..}
  • }

Resultado:

  • 0
  • 1
  • 2
  • 3

martes, 16 de febrero de 2010

Bucles: for.

Codigo:

  • public class BucleFor {
  • ..public static void main(String[] args) {
  • ....for(int i = 0; i < 4; i++) {
  • ......System.out.println(i);
  • ....}
  • ..}
  • }

Resultado:

  • 0
  • 1
  • 2
  • 3

Sentencia condicional: switch-case-default.

Codigo:

  1. public class CondicionalSwitch {
  2. ...public static void main(String[] args) {
  3. ......int a = 2;
  4. ......switch (a) {
  5. .........case 1: System.out.println("a = 1"); break;
  6. .........case 2: System.out.println("a = 2"); break;
  7. .........case 3: System.out.println("a = 3"); break;
  8. .........default: System.out.println("No encontrado");
  9. ......}
  10. ...}
  11. }

Resultado:

  • a = 2

lunes, 15 de febrero de 2010

Sentencia condicional: if-else.

Codigo:

  1. public class CondicionalIf {
  2. ...public static void main(String[] args) {
  3. ......int a = 2;
  4. ......if (a == 1) { System.out.println("a = 1"); }
  5. ......else if (a == 2) { System.out.println("a = 2"); }
  6. ......else if (a == 3) { System.out.println("a = 3"); }
  7. ...}
  8. }
Resultado:
  • a = 2

sábado, 13 de febrero de 2010

Juntar palabras con operaciones y números.

Codigo:
  1. public class Concatenacion {
  2. ...public static void main(String[] args) {
  3. ......System.out.println("Resultado 1: " + (1 + 3));
  4. ......System.out.println("Resultado 2: " + 1 + 3);
  5. ...}
  6. }
Resultado:
  • Resultado 1: 4
  • Resultado 2: 13

viernes, 12 de febrero de 2010

Uso de la clase Math: Cálculo de seno y coseno.

 

Código:

package senocoseno;

public class SenoCoseno {

    public static void main(String[] args) {
        System.out.println("Seno de 90 = " + java.lang.Math.sin(90));
        System.out.println("Coseno de 90 = " + Math.cos(90));
    }

}

 

Resultado:

run:
Seno de 90 = 0.8939966636005579
Coseno de 90 = -0.4480736161291701
BUILD SUCCESSFUL (total time: 0 seconds)

 

 

jueves, 11 de febrero de 2010

Operaciones básicas: Sumar, restar, multiplicar y dividir.

Codigo:

  1. public class Operaciones {
  2. .....public static void main(String[] args) {
  3. ..........int a = 6, b = 2;
  4. ..........System.out.println(a + b);
  5. ..........System.out.println(a - b);
  6. ..........System.out.println(a * b);
  7. ..........System.out.println(a / b);
  8. .....}
  9. }

Resultado:

  • 8
  • 4
  • 12
  • 3

miércoles, 10 de febrero de 2010

Hola Mundo!

Codigo:

  1. public class HolaMundo {
  2. .....public static void main (String [] arg) {
  3. ..........System.out.println ("Hola Mundo!");
  4. .....}
  5. }

Resultado:

  • Hola Mundo!

Con la tecnología de Blogger.