Librería Utilidades

A continuación hay una pequeña librería que nos puede ayudar a la hora de realizar pequeñas tareas. Podemos crear un objeto de ella para usar sus métodos o extender de ella. Tiene su javadoc integrado.
Librería

En el código de a continuación tenemos dos métodos que nos servirán para agregar o quitar elementos de un ComboBox

public DefaultComboBoxModel quitarElementoCombo(JComboBox jc){
        //Obtenemos el modelo del combobox
        DefaultComboBoxModel modelo = (DefaultComboBoxModel) jc.getModel();
            //Obtenemos el objeto seleccionado para su eliminación
            int indice = jc.getSelectedIndex();
            //Removemos el elemento "indice"
            modelo.removeElementAt(indice);
        //Devolvemos el modelo ya con el elemento quitado
        return modelo;
    }

public DefaultComboBoxModel añadirElementocombo(JComboBox jc, String elemento){
        //Recogemos el modelo del combobox
        DefaultComboBoxModel modelo = (DefaultComboBoxModel) jc.getModel();
            //Añadimos el elemento recibido desde el método
            modelo.addElement(elemento);
        //Devolvemos el modelo ya con el elemento agregado
        return modelo;
    }

Ejemplo AJAX (Parte 1)

En este ejemplo, que dividiremos en parte, se hará una web de 0 para mostrar resultados usando AJAX consultando una base de datos MySQL. Comencemos con la plantilla básica de la web :


 
  
 
 
  
  

Ejemplo Web Ajax

You think water moves fast? You should see ice. It moves like it has a mind. Like it knows it killed the world once and got a taste for murder. After the avalanche, it took us a week to climb out. Now, I don't know exactly when we turned on each other, but I know that seven of us survived the slide... and only five made it out. Now we took an oath, that I'm breaking now. We said we'd say it was the snow that killed the other two, but it wasn't. Nature is lethal but it doesn't hold a candle to man.
Soy un footer
En la próxima parte crearemos la base de datos y el php para consultar.

En algunos casos, o por estética, necesitaremos insertar un jcombobox dentro de una celda de una jtable. El proceso aunque pueda parecer largo y tedioso, es bastante simple, el código esta a continuación.

//Creamos un combo box sin modelo
JComboBox< Object > jc = new JComboBox<>();
        //Creamos un modelo de combobox y le añadimos 3 elementos
        DefaultComboBoxModel modelo = new DefaultComboBoxModel();
        modelo.addElement("Primero");
        modelo.addElement("Segundo");
        modelo.addElement("Tercero");
        //Asignamos el modelo al combobox
        jc.setModel(modelo);
        //Ahora vamos a recoger una columna que será donde insertemos el combobox
        TableColumn columna = jTable1.getColumnModel().getColumn(0);
        //Creamos un nuevo editor de celda. Tambien puede insertarse checkboxs y textfields
        TableCellEditor editor = new DefaultCellEditor(jc);
        //Le asignamos a la columna el editor creado
        columna.setCellEditor(editor);

Con el método de a continuación podemos recoger los datos de cualquier JTable y nos devolverá un array bidimensional con los datos

public String[][] recogerJtable(JTable tabla){
        //Recogemos las filas y columnas para saber las dimensiones del array bidimensional
        int filas = tabla.getRowCount();
        int columnas =tabla.getColumnCount();
        String[][] datos = new String[filas][columnas];
            //Con este for recorremos las filas
            for (int i = 0; i < filas; i++) {
                //Con este for recorremos las columnas de i fila
                for (int j = 0; j < columnas; j++) {
                    datos[i][j] = (String) tabla.getValueAt(i, j);
                }
        }
        return datos;
    }

En el ejemplo siguiente tenemos un botón simple que tiene una transición de "padding". Con el atributo css transition le decimos que los cambios en el padding tengan una transición de 1 segundo, y con el modificador hover le cambiamos el padding (también funcionaría si usáramos javascript para el cambio). El código es el siguiente :



    
        
    
    
        
    

Y aquí el resultado : Transición Sencilla

En este ejemplo veremos como descargar un archivo y en una barra de progreso ver el estado de la descarga. Comencemos por la interfaz:

Ahora crearemos la clase que se encargará de descargar el archivo y animar la barra de progreso.
      package modelo;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.logging.Level;
import java.util.logging.Logger;
import vista.principal;

/**
 *
 * @author pablo
 */
public class hiloDescargar implements Runnable{

    principal p;
    String ar;
    
    public hiloDescargar(principal p, String ar){
        this.p = p;
        this.ar = ar;
    }
    
    @Override
    public void run() {
        try {
            //Creamos una URL usando el String recibido del campo de texto
            URL url = new URL(ar);
            URLConnection urlCon = url.openConnection();
            //Creamos un archivo para la descarga igual que el archivo remoto
            File file2 = new File(url.toString());
            File file = new File(file2.getName());
            //Abrimos streamers y creamos un array de bytes para ir almacenando hay
            //los datos de descarga y enviarlos al archivo
            try (FileOutputStream fos = new FileOutputStream(file)) {
                InputStream is = urlCon.getInputStream();
                byte [] array = new byte[1000];
                int leido = is.read(array);
                //Aplicando valores a la barra de progreso
                int maximo = urlCon.getContentLength();
                    p.barra.setMinimum(0);
                    p.barra.setMaximum(maximo);
                    p.barra.setValue(0);
                    int actual = 0;
                    while (leido > 0) {
                        fos.write(array,0,leido);
                        leido=is.read(array);
                        p.barra.setValue(actual);
                        actual += leido;
                        p.barra.setString("Descargando "+actual+"/"+maximo+" bytes");
                    }
            fos.close();
                }
        } catch (MalformedURLException ex) {
            Logger.getLogger(hiloDescargar.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(hiloDescargar.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}
Ahora tan solo nos queda crear un objeto hiloDescargar e introducirlo dentro de un hilo. Usaremos un ActionPerformed sobre el botón de descargar para ello.
     this.p.btnDescargar.setActionCommand("btnDescargar");
        this.p.btnDescargar.addActionListener((ActionEvent ae) -> {
            hiloDescargar h = new hiloDescargar(p, p.txtDireccion.getText());
            Thread t = new Thread(h);
            t.start();
        });
Con esto estaría terminada la aplicación.
Proyecto de netbeans : aquí.

Entradas antiguas

Con la tecnología de Blogger.

.