Mostrando entradas con la etiqueta explicación. Mostrar todas las entradas
Mostrando entradas con la etiqueta explicación. Mostrar todas las entradas

jueves, 22 de enero de 2015

Clase fecha (80) v2.0

package ejercicio80;

/**
 *
 * @author juan
 */
public class Fecha {

    private int dia;
    private int mes;
    private int anyo;

    /**
     * Constructor por defecto genera fechas al 1 del 1 del 2013
     */
    public Fecha() {
        this.dia = 1;
        this.mes = 1;
        this.anyo = 2013;
    }

    /**
     * Constructor al que les pasamos tres parámetros si la fecha es posible se
     * le asigna en caso de fecha incorrecta inicializa el objeto al 1-1-2013
     *
     * @param dia representa el día de la fecha completa
     * @param mes mes de la fecha
     * @param anyo año de la fecha
     */
    public Fecha(int dia, int mes, int anyo) {
        if (comprobarFecha(dia, mes, anyo)) {
            this.dia = dia;
            this.mes = mes;
            this.anyo = anyo;
        } else {
            this.dia = 1;
            this.mes = 1;
            this.anyo = 2013;
        }
    }

    /**
     * Permite asignar día, mes y anyo al objeto fecha. Si la asignación es
     * correcta devuelve true, en caso contrario false.
     *
     * @param dia día del año que se quiere asignar
     * @param mes mes del año en formato numérico
     * @param anyo año en formato numérico
     * @return true si la fecha asignada es posible, false en caso contrario
     */
    public boolean asignate(int dia, int mes, int anyo) {
        boolean retorno = false;

        if (comprobarFecha(dia, mes, anyo)) {
            this.dia = dia;
            this.mes = mes;
            this.anyo = anyo;
 

lunes, 19 de enero de 2015

Clase fecha (ejercicio 80)

Primera parte del ejercicio en la que comprobamos las fechas y vamos añadiendo comentarios a los métodos

package ejercicio80;

/**
 *
 * @author juan
 */

miércoles, 10 de diciembre de 2014

Empezando con arrays

package explicacionarray;
import java.util.Scanner;
/**
*
* @author juan
*/
public class ExplicacionArray {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        int [] unArray;
        int [] otroArray = new int[20];
        int lon=10;
        Scanner leer = new Scanner(System.in);
       
 

jueves, 30 de octubre de 2014

Explicación Switch case

public static void main(String[] args) {
        Scanner leer = new Scanner(System.in);
        int num;
        String mes="", diaSemana="";
       
        do {           
            System.out.println("Por favor introduzca el día de la semana (1-7)");
            num = leer.nextInt();
        } while (num<1 || num >7);
        switch (num) {
            case 1:
                diaSemana= "Lunes";
                break;
             case 2:
                diaSemana= "Martes";
                break;
             case 3:
                diaSemana= "Miércoles";
                break;
             case 4:
                diaSemana= "Jueves";
     

viernes, 30 de mayo de 2014

Simular tiradas de un dado


/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package simulartiradas;


Contar vocales de un cuadro de texto "preparando examen"


package unidad4u352;


public class Vocales {
        String cadena;
       
      
        int vocales[];

    public Vocales(String cadena) {
   

miércoles, 28 de mayo de 2014

Palíndromas en Swing "preparando examen"



/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package unidad4palindromas;

/**
*
* @author juan
*/
public class Ventana extends javax.swing.JFrame {
   
    private boolean palindroma(String miCadena){
 

Cálculo de las potencias de 2 hasta ese número "preparando examen"




/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
* Fuente:
* http://garabatoslinux.net/validacion-de-jtextfield-textfield-numerico-binario-o-solo-letras.html

*/
package unidad4u2e19;

import javax.swing.JOptionPane;

/**
*
* @author juan
*/
public class Potencias extends javax.swing.JFrame {

    /**
     * Creates new form Potencias
 

Interfaz cálculo DNI sencilla "tipo examen"

En un ejemplo real controlad las pulsaciones para permitir sólo dígitos:

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package dni;

import javax.swing.JOptionPane;

/**
*
* @author juan
*/
public class AplicacionDNI extends javax.swing.JFrame {

    public static final String NIF_STRING_ASOCIATION = "TRWAGMYFPDXBNJZSQVHLCKE";

  /**
   * Devuelve un NIF completo a partir de un DNI. Es decir, añade la letra del NIF
   * @param dni dni al que se quiere añadir la letra del NIF
   * @return NIF completo.
   */
  public static String letraDNI(int dni) {
    return String.valueOf(dni) + NIF_STRING_ASOCIATION.charAt(dni % 23);
  }
    /**
     * Creates new form AplicacionDNI
     */
    public AplicacionDNI() {
        initComponents();
    }

viernes, 23 de mayo de 2014

Controles Swing: Botones de radio, casillas verificación, spinner, slider,...

Continuamos viendo el uso de controles Swing en java, para ello hacemos una aplicación muy sencilla que permite modificar el estilo, tamaño y tipo de letra de un área de texto.
La ventana de la aplicación será algo como:

y el código (prestad atención en que alguno de los eventos llaman ya a la función p.e. cambiarTamano pero otros controles tratan el evento directamente,...es lo explicado en clase, todas deberían llamar al método para no estar repitiendo código y tratando lo mismo en veinte sitios ya que dificulta además de la programación el mantenimiento de las aplicaciones):


lunes, 12 de mayo de 2014

Botón con imagen cambiando color de fondo

package explicacionventana;

import java.awt.Color;
import java.awt.Image;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import java.util.Random;

/**
*
* @author juan
*/
public class Ventana extends javax.swing.JFrame {

    /**
     * Creates new form Ventana
     */
    JButton boton1;
    public Ventana() {
        initComponents();
     

lunes, 5 de mayo de 2014

Convertir a Pesetas

Método que permite convertir a pesetas el texto tecleado en un campo de texto (supuestamente en euros llamado txtEuros). Se podría llamar en el caso del evento ActionPerformed y/o KeyReleased:

private void convAPesetas() {
     double pesetas,euros;
     DecimalFormat formato = new DecimalFormat("######.##");
     if (!txtEuros.getText().equals(""))
        try {
            euros = Double.parseDouble(txtEuros.getText());
            pesetas=euros*166.386;
            txtPesetas.setText(formato.format(pesetas));
        } catch (NumberFormatException e) {
            JOptionPane.showMessageDialog(this, "Los datos introducidos no se pueden convertir a moneda", "Error en la conversión", JOptionPane.ERROR_MESSAGE);
            txtEuros.setText("");
            txtEuros.requestFocus();
        }
    
    
    
    }

viernes, 2 de mayo de 2014

Pasando de Euros a Pesetas al cambiar pulsaciones sin DocumentListener

En lugar de usar DocumentListener como en la entrada anterior para gestionar los cambios de letras en un cuadro de texto, en esta ocasión se emplea KeyReleased para detectar los cambios acaecidos en el contenido de los cuadros de texto:

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package explicaciones;

import javax.swing.JOptionPane;

/**
*
* @author juan
*/
public class ventanaboton2 extends javax.swing.JFrame {


Explicando DocumentListener

Si queremos controlar los cambios en el contenido de un cuadro de texto podemos emplear el evento DocumentListener -que no está contemplado en Netbeans por ejemplo- en el siguiente ejemplo se crea una clase con un par debotones y cuadros de texto.

Tras ir añadiendo botones durante la explicación, al final cualquier cambio en un cuadro de texto cambia el contenido en el cuadro de texto del otro lado. (para que no comience a realizar cambios sucesivos en los dos lados empleamos una propiedad que nos diga si se está convirtiendo ya un tipo de dato a otro (sino las operaciones podrían ser infinitas ya que los datos que mostramos no son divisiones exactas).

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package explicaciones;

import java.awt.Event;
import java.awt.event.ActionEvent;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;


/**
*
* @author juan
*/
public class VentBotonesLabel extends javax.swing.JFrame {
    private boolean cambiando;
    /**
 

miércoles, 23 de abril de 2014

Unidad 2 Ejercicio 19: Potencias de 2 con excepciones y cuadros de diálogo

Volvemos al ejercicio 19 de la unidad 2, pero en este caso leemos los valores mediante un cuadro de diálogo de la clase JOptionPane y mostramos el resultado del mismo modo.

También aprovechamos para repasar el manejo de excepciones y hacemos que si el usuario introduce algún valor que no sea de tipo numérico se lo advierta (ojo no usamos excepciones específicas).


package interfaz;

import javax.swing.JOptionPane;


public class Interfaz {

    /**
     * @param args the command line arguments
     */
    static String calculaPotencia(int num){
        String cadena="";

lunes, 21 de abril de 2014

Interfaz Gráfica de usuario en Java GUI


image
Esta semana comenzaremos con las interfaces gráficas en Java, independientemente de la manera en que las programemos –usando algún IDE o “a mano”- una buena aproximación al tema es este enlace a un tema introductorio de la Universidad de Salamanca y cuyo código parece sacada del libro “Como Programar” Ed. Pearson Prentice Hall.
Se pueden ver por un lado algunos de los componentes –junto con sus clases- y el funcionamiento de los eventos en Java prestando especial atención a aquellos más sencillos/básicos: botones, casillas de selección y botones de opciones.
En este otro enlace de la Universidad Politécnica de Cataluña se presta especial atención a las relaciones entre componentes, eventos y listeners.

*un buen complemento a los apuntes y boletines de ejercicios de Juanjo Sonrisa

viernes, 11 de abril de 2014

Programame Ourense 2014 Presupuestos con objetos y arrayList

H - Presupuestos

Un compañero de Frenando, un tal, Kimi Cuentas se ha propuesto reformar una casa para dedicarla a turismo rural, pero tiene unas fuertes restricciones presupuestarias y temporales por lo que se ha dedicado a solicitar presupuestos a distintas empresas haciendo especial hincapié en que las empresas desglosaran las tareas en una serie de grupos a los que ha asignado una inicial:
O - OTROS
C - CARPINTERÍA
A - ALBAÑILERÍA
F - FONTANERÍA
R - CRISTALERÍA
E - ELECTRICIDAD
Frenando le ha implementado un programa que le permita escoger el mejor presupuesto.
En cada presupuesto puede haber categorías duplicadas o inexistentes, en caso de una categoría duplicada nos quedaremos con el mejor precio de esa categoría.

Programame Ourense H (para modificar)

Este código no controla duplicados en las categorías, modificarlo para que si lo haga:

package h.presupuestos;
import java.util.Scanner;
import java.util.ArrayList;

public class HPresupuestos {

  
    public static void main(String[] args) {
       Scanner leo = new Scanner(System.in);
       String linea;
       String palabras [];
       Categoria leida;
       Empresa empGana,empActual;
      
        empGana= new Empresa();
        linea=leo.nextLine();
        while (!linea.equalsIgnoreCase("FIN")) {
            empActual = new Empresa(linea);
            linea=leo.nextLine();
            palabras=linea.split(" ");
            while (!(palabras[1].equals("0") && palabras[2].equals("0") && palabras[3].equals("0"))) {
                leida= new Categoria(palabras[0].charAt(0),Double.parseDouble(palabras[1]),Double.parseDouble(palabras[2]),Double.parseDouble(palabras[3]));
                empActual.pushCategoria(leida);
                linea=leo.nextLine();
                palabras=linea.split(" ");
            }
            if ((empGana.nombre.equals("primera") || empActual.getPresupuesto()<empGana.getPresupuesto()) ||(empActual.getPresupuesto()==empGana.getPresupuesto()&&empActual.getHoras()<empGana.getHoras()))
            {
               empGana=empActual;
              
            }
          
          
            linea=leo.nextLine();
        }
        System.out.println(empGana.nombre+" "+empGana.getHoras());
      
      
      
      
    }
}

miércoles, 9 de abril de 2014

Explicación Interface, override, implements....

Ejemplo de deportista implementando comparable para en un Array mostrar los elementos ordenados, también sobrescribimos el método equals que es empleado por el método contains de los ArraysList para decirnos si un objeto está o no incluido en el mismo.:

package interfaces;


public class Deportista implements Comparable {
    int anhos;
    String nombre;

    public Deportista(int anhos, String nombre) {
        this.anhos = anhos;
        this.nombre = nombre;
       
       
    }

    @Override
 

lunes, 7 de abril de 2014

Explicando herencia 2

Definiendo un objeto sofá que herede propiedades de un mueble.




package ejerciciomuebles;

/**
*
* @author juan
*/
public class EjercicioMuebles {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        Mueble miMueble = new Mueble();