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.

miércoles, 24 de marzo de 2010

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

Codigo:
  1. import javax.swing.*;
  2. import javax.swing.table.DefaultTableModel;
  3. import java.awt.*;
  4. import java.awt.event.*;
  5. ..public class Main extends JFrame {
  6. ....public Main() {
  7. ....Object[][] datos = {
  8. ......{"Juan", new Integer(25), new Boolean(false)},
  9. ......{"Sonia", new Integer(33), new Boolean(true) },
  10. ......{"Pedro", new Integer(42), new Boolean(false)},
  11. ....};
  12. ....String[] columnNames = {"Nombre","Años","Apto",};
  13. ...DefaultTableModel dtm= new DefaultTableModel(datos,columnNames);
  14. ....final JTable table = new JTable(dtm);
  15. // Agregar nueva columna
  16. ....String[] columnaNueva1= {"vago","diestro","normal",};
  17. ....dtm.addColumn("Tipo",columnaNueva1);
  18. // Agregar nueva fila
  19. ....Object[] newRow={"Maria",new Integer(55),new Boolean(false)};
  20. ....dtm.addRow(newRow);
  21. // Modificar celda especifica
  22. ....dtm.setValueAt("XXX", 3, 3); // Row/Col
  23. ....table.setPreferredScrollableViewportSize(new Dimension(250, 100));
  24. ....JScrollPane scrollPane = new JScrollPane(table);
  25. ....getContentPane().add(scrollPane, BorderLayout.CENTER);
  26. ....addWindowListener(new WindowAdapter() {
  27. ......public void windowClosing(WindowEvent e){System.exit(0);}
  28. ....});
  29. ..}
  30. ..public static void main(String[] args) {
  31. ....Main frame = new Main();
  32. ....frame.pack();
  33. ....frame.setVisible(true);
  34. ..}
  35. }

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 microfono.

Codigo:
  1. import java.io.File;
  2. import javax.sound.sampled.*;
  3. .public class Main {
  4. ..AudioFileFormat.Type aFF_T = AudioFileFormat.Type.WAVE;
  5. ..AudioFormat aF = new AudioFormat(8000.0F, 16, 1, true, false);
  6. ..TargetDataLine tD;
  7. ..File f = new File("Grabacion.wav");
  8. ..public Main() {
  9. ...try {
  10. ....DataLine.Info dLI = new DataLine.Info(TargetDataLine.class,aF);
  11. ....tD = (TargetDataLine)AudioSystem.getLine(dLI);
  12. ....new CapThread().start();
  13. ....System.out.println("Grabando durante 10s...");
  14. ....Thread.sleep(10000);
  15. ....tD.close();
  16. ...}catch (Exception e) {}
  17. ..}
  18. ..class CapThread extends Thread {
  19. ..public void run() {
  20. ...try {
  21. ....tD.open(aF);
  22. ....tD.start();
  23. ....AudioSystem.write(new AudioInputStream(tD), aFF_T, f);
  24. ...}catch (Exception e){}
  25. ..}
  26. .}
  27. .public static void main(String[] args) { new Main(); }
  28. }

Resultado:

  • Grabando durante 10s...

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".

Codigo:

  1. import java.io.File;
  2. import javax.sound.sampled.AudioSystem;
  3. import javax.sound.sampled.Clip;
  4. public class Main {
  5. ..public static void main(String[] args) {
  6. ....try {
  7. ......Clip sonido = AudioSystem.getClip();
  8. ......File a = new File("c:\\sonidos\\sonido1.wav");
  9. ......sonido.open(AudioSystem.getAudioInputStream(a);
  10. ......sonido.start();
  11. ......System.out.println("Reproduciendo 10s. de sonido...");
  12. ......Thread.sleep(1000); // 1000 milisegundos (10 segundos)
  13. ......sonido.close();
  14. ....}
  15. ....catch (Exception tipoerror) {
  16. ......System.out.println("" + tipoerror);
  17. ....}
  18. ..}
  19. }

Resultado:

  • Reproduciendo 10s. de sonido...

lunes, 1 de marzo de 2010

Crear grupo de botones: ButtonGroup.

Codigo:
  1. import javax.swing.*;
  2. import java.awt.*;
  3. public class Main extends JFrame {
  4. ..JPanel panel = new JPanel();
  5. ..ButtonGroup grupo = new ButtonGroup();
  6. ..JRadioButton op1 = new JRadioButton("Opción 1");
  7. ..JRadioButton op2 = new JRadioButton("Opción 2");
  8. ..JRadioButton op3 = new JRadioButton("Opción 3");
  9. ..public Main() { // constructor
  10. ....grupo.add(op1);
  11. ....grupo.add(op2);
  12. ....grupo.add(op3);
  13. ....panel.add(op1);
  14. ....panel.add(op2);
  15. ....panel.add(op3);
  16. ....getContentPane().add(panel);
  17. ....getContentPane().setLayout(new FlowLayout());
  18. ....setDefaultCloseOperation(EXIT_ON_CLOSE);
  19. ....setSize(300,120);
  20. ....setVisible(true);
  21. ..}
  22. ..public static void main(String[] args) { new Main(); }
  23. }

Resultado:

Ejecutar evento al pulsar el botón.

Codigo:

  1. import javax.swing.*;
  2. import java.awt.*;
  3. import java.awt.event.*;
  4. public class ventana extends JFrame {
  5. ..JButton boton1 = new JButton("Pulsar aqui para cerrar ventana");
  6. ..FlowLayout ventana1 = new FlowLayout();
  7. ..public Main() {
  8. ....boton1.addActionListener (new ActionListener(){
  9. ......public void actionPerformed(ActionEvent e){
  10. ........System.exit(0); } }
  11. ....);
  12. ....getContentPane().add(boton1);
  13. ....getContentPane().setLayout(ventana1);
  14. ....setSize(250,150);
  15. ....setTitle("Titulo ventana");
  16. ....setDefaultCloseOperation(EXIT_ON_CLOSE);
  17. ....setVisible(true);
  18. ..}
  19. ..public static void main(String[] args) { new Main(); }
  20. }

Resultado:

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

Con la tecnología de Blogger.