viernes, 12 de abril de 2013

#JavaVisual

  Despues de obtener cierta base, pondre en este caso un ejemplo de programacion visual, en el que desarrollaremos un programa que calcule la multiplicacion de dos valores introducidos por el usuario.
  Como observaran en el video demostrativo se produce un error de calculo porque en la asignacion del segundo valor habia vuelto a escribir el primero, una vez comprobado se rectifica sobre la marcha.
  Abrimos Eclipse y seleccionamos nuevo proyecto, dentro del proyecto pulsamos con el boton derecho y seleccionamos Nuevo/Otras/Swin Designer/JFrame, indicamos el nombre y pasamos al codigo.
  Bajo el codigo tendremos dos pestañas Source (codigo) y Design (diseño), pulsamos diseño y veremos la parte visual, para poder poner los controles a nuestro antojo, pulsamos con el boton derecho en la ventana en modo diseño /setLayout/absoluteLayout.
  Despues insertamos tres controles Jlabel, dos JTextField y un JButton, camiandoles las propiedades de texto (para que aparezcan reflejadas en la ventana) y el nombre a utilizar como referencia en el codigo.
  Señalamos el boton y en propiedades marcamos action performer y pasamos al codigo que se ejecuta al pulsar boton, el codigo sera:
 
btnMultiplica.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
int i1=Integer.parseInt(textField1.getText());
int i2=Integer.parseInt(textField2.getText());
int multiplica=i1*i2;
lblResultado.setText(String.valueOf(multiplica));
}
});

  Con getText obtenemos el valor introducido en el textField, con integer.parseInt lo transformamos en numero para poder operar.
  Con setText mostramos en el label el valor de la operacion convertido a string (cadena de caracteres) para poder mostrarlo en el Jlabel.
  Para que el lblResultado muestre el valor tenemos que definirlo como atributo de clase, lo señalamos y marcamos en la parte de propiedades el boton convert Local to Field (se ve claro en el video).

  El codigo completo de la aplicacion es: 

package EjemplosJava;

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class Multiplica extends JFrame {

private JPanel contentPane;
private JTextField textField1;
private JTextField textField2;
private JLabel lblResultado;

/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Multiplica frame = new Multiplica();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}

/**
* Create the frame.
*/
public Multiplica() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);

JLabel lblNewLabel = new JLabel("Introduce Importe");
lblNewLabel.setBounds(23, 11, 109, 14);
contentPane.add(lblNewLabel);

JLabel lblNewLabel_1 = new JLabel("Introduce Importe");
lblNewLabel_1.setBounds(23, 54, 94, 14);
contentPane.add(lblNewLabel_1);

textField1 = new JTextField();
textField1.setBounds(160, 11, 86, 20);
contentPane.add(textField1);
textField1.setColumns(10);

textField2 = new JTextField();
textField2.setBounds(160, 54, 86, 20);
contentPane.add(textField2);
textField2.setColumns(10);

lblResultado = new JLabel("Resultado");
lblResultado.setBounds(241, 117, 61, 14);
contentPane.add(lblResultado);

JButton btnMultiplica = new JButton("Multiplica");
btnMultiplica.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
int i1=Integer.parseInt(textField1.getText());
int i2=Integer.parseInt(textField2.getText());
int multiplica=i1*i2;
lblResultado.setText(String.valueOf(multiplica));
}
});
btnMultiplica.setBounds(99, 113, 89, 23);
contentPane.add(btnMultiplica);
}
}

 

martes, 9 de abril de 2013

#Android SqLite


  Abrimos Eclipse y pinchamos en Archivo / Nuevo / Android Ap
  Ponemos como nombre de aplicación GestionSqlite en package ejemplos.android.
  En este ejemplo desarrollamos una aplicacion simple que pueda operar con una base de datos SqLite.
  SqLite es una base de datos que se utiliza en muchos dispositivos desde pc a movil, es sencilla de manejar, como veremos a continuacion.
  Crearemos una aplicacion que permita introducir codigo, nombre e importe de ventas, como si se gestionaran los datos de vendedores.
  Bajo estas lineas pongo imagen de la actividad a crear, junto con el video.   


  video explicativo

  Empezamos:
  Creamos una nueva clase con el siguiente codigo.
package ejemplos.android;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;

public class GestionSQLiteOpenHelper extends SQLiteOpenHelper {
    public GestionSQLiteOpenHelper(Context context, String nombre, CursorFactory factory, int version) {
        super(context, nombre, factory, version);
    }
    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("create table empleados(codigo integer primary key, nombre text, importe double)");
    }
    @Override
    public void onUpgrade(SQLiteDatabase db, int versionAnte, int versionNue) {
        db.execSQL("drop table if exists empleados");
        db.execSQL("create table empleados(cogigo integer primary key, nombre text, importe double)");      
    }  
}

  Despues introducimos el codigo de la clase principal:

package ejemplos.android;

import android.app.Activity;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends Activity {
    private EditText et1, et2, et3;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        et1 = (EditText) findViewById(R.id.et1);
        et2 = (EditText) findViewById(R.id.et2);
        et3 = (EditText) findViewById(R.id.et3);
      }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
    public void alta(View v) {
        GestionSQLiteOpenHelper gestion = new GestionSQLiteOpenHelper(this,
                "gestion", null, 1);
        SQLiteDatabase bd = gestion.getWritableDatabase();
        String codigo = et1.getText().toString();
        String nombre = et2.getText().toString();
        String importe = et3.getText().toString();
      
        ContentValues registro = new ContentValues();
        registro.put("codigo", codigo);
        registro.put("nombre", nombre);
        registro.put("importe", importe);
        bd.insert("empleados", null, registro);
        bd.close();
        et1.setText("");
        et2.setText("");
        et3.setText("");
        Toast.makeText(this, "Se cargaron los datos de la persona",
                Toast.LENGTH_SHORT).show();
    }
    public void consulta(View v) {
        GestionSQLiteOpenHelper gestion = new GestionSQLiteOpenHelper(this,
                "gestion", null, 1);
        SQLiteDatabase bd = gestion.getWritableDatabase();
        String codigo = et1.getText().toString();
        Cursor fila = bd.rawQuery(
                "select nombre,importe from empleados where codigo=" + codigo, null);
        if (fila.moveToFirst()) {
            et2.setText(fila.getString(0));
            et3.setText(fila.getString(1));
        } else
            Toast.makeText(this, "No existe una persona con dicho codigo",
                    Toast.LENGTH_SHORT).show();
        bd.close();
    }
    public void baja(View v) {
        GestionSQLiteOpenHelper gestion = new GestionSQLiteOpenHelper(this,
                "gestion", null, 1);
        SQLiteDatabase bd = gestion.getWritableDatabase();
        String codigo = et1.getText().toString();
        int cant = bd.delete("empleados", "codigo=" + codigo, null);
        bd.close();
        et1.setText("");
        et2.setText("");
        et3.setText("");
        if (cant == 1)
            Toast.makeText(this, "Se borró la persona con dicho documento",
                    Toast.LENGTH_SHORT).show();
        else
            Toast.makeText(this, "No existe una persona con dicho documento",
                    Toast.LENGTH_SHORT).show();
    }
    public void modificacion(View v) {
        GestionSQLiteOpenHelper gestion = new GestionSQLiteOpenHelper(this,
                "gestion", null, 1);
        SQLiteDatabase bd = gestion.getWritableDatabase();
        String codigo = et1.getText().toString();
        String nombre = et2.getText().toString();
        String importe = et3.getText().toString();
        ContentValues registro = new ContentValues();
        registro.put("nombre", nombre);
        registro.put("importe", importe);
        int cant = bd.update("empleados", registro, "codigo=" + codigo, null);
        bd.close();
        if (cant == 1)
            Toast.makeText(this, "se modificaron los datos", Toast.LENGTH_SHORT).show();
        else
            Toast.makeText(this, "no existe una persona con dicho codigo",
                    Toast.LENGTH_SHORT).show();
    }
}
En el codigo se introducen los metodos que se ejecutan al pulsar los botones, con el mismo nombre que introducimos en el evento click de cada boton.
Aparece tambien el evento Toast que permite realizar mensajes al usuario durante unos segundos.
En la primera clase se crea la tabla empleados con los campos indicados.
El codigo es autoexplicativo.
No olvidar nunca que despues de cualquier operacion hay que cerrar la base de datos con close, al igual que con los archivos como veremos en otra ocasion.