viernes, 20 de abril de 2012

Crear un pop up en un boton

Si querían poner un pop up en sus botones como menú de opciones esta es la forma les adjunto el código:

import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JMenuItem; 
import javax.swing.JPopupMenu;
/** 
* 
* @author jonathan-palomino.blogspot.com 
*/ 
public class Pop_Up extends JFrame{
    public Pop_Up() { 
        setSize(200,150); 
        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); 
        prueba.setBounds(40, 40, 140, 50); 
        fantasma.setBounds(10, 10, 50, 30); 
        fantasma.setText(""); 
        prueba.setText("Boton padre"); 
        element.add(ele1); 
        element.add(ele2); 
        
        prueba.setComponentPopupMenu(element); 
        
        add(prueba); 
        add(fantasma); 
    } 
    public static void main(String[] args){ 
        Pop_Up ob = new Pop_Up(); 
        ob.show(); 
    } 
    JButton prueba = new JButton(); 
    JPopupMenu element = new JPopupMenu(); 
    JMenuItem ele1 = new JMenuItem("Elemento1");    
    JMenuItem ele2 = new JMenuItem("Elemento2"); 
    JLabel fantasma = new JLabel(); 
}

Zipear archivos

Para zipear archivos desde java les traigo la siguiente clase:

/** 
* 
* @author jonathan-palomino.blogspot.com
*/ 
import java.util.logging.Level; 
import java.util.logging.Logger; 
import java.util.zip.*; 
import java.io.*; 
  
public class Zipear { 
    public static void Comprimir(String args[]) throws IOException{ 
              if (args.length < 2) { 
            System.err.println("use: Zip.zip file1 file2 file3"); 
            System.exit(-1); 
        } 
        File zipFile = new File(args[0]); 
        if (zipFile.exists()) { 
            System.err.println("Archivo Zip existente seleccione otro"); 
            System.exit(-2); 
        } 
        FileOutputStream fos = new FileOutputStream(zipFile); 
        ZipOutputStream zos = new ZipOutputStream(fos); 
        int bytesRead; 
        byte[] buffer = new byte[1024]; 
        CRC32 crc = new CRC32(); 
        for (int i=1, n=args.length; i < n; i++) { 
            String name = args[i]; 
            System.out.println("--------"+name); 
            File file = new File(name); 
            if (!file.exists()) { 
                System.err.println("Skipping: " + name); 
                continue; 
            } 
            BufferedInputStream bis = new BufferedInputStream( 
                new FileInputStream(file)); 
            crc.reset(); 
            while ((bytesRead = bis.read(buffer)) != -1) { 
                crc.update(buffer, 0, bytesRead); 
            } 
            bis.close(); 
            // Reset to beginning of input stream 
            bis = new BufferedInputStream( 
                new FileInputStream(file)); 
            ZipEntry entry = new ZipEntry(name); 
            entry.setMethod(ZipEntry.STORED); 
            entry.setCompressedSize(file.length()); 
            entry.setSize(file.length()); 
            entry.setCrc(crc.getValue()); 
            zos.putNextEntry(entry); 
            while ((bytesRead = bis.read(buffer)) != -1) { 
                zos.write(buffer, 0, bytesRead); 
            } 
            bis.close(); 
        } 
        zos.close(); 
    } 
    public static void main(String args[])  { 
        String argumentos[] = {"C:\\zip.zip","C:\\Test.pdf"}; 
        try { 
            Comprimir(argumentos); 
        } catch (IOException ex) { 
            Logger.getLogger(Zipear.class.getName()).log(Level.SEVERE, null, ex); 
        } 
    } 
}

Capturar pantalla

Si queremos por algún motivo obtener la captura de pantalla con java aquí les dejo el código:

import java.awt.Dimension; 
import java.awt.Rectangle; 
import java.awt.Robot; 
import java.awt.Toolkit; 
import java.awt.image.BufferedImage; 
import java.util.logging.Level; 
import java.util.logging.Logger; 
import javax.imageio.ImageIO; 
import java.io.File; 
/** 
* 
* @author jonathan-palomino.blogspot.com 
*/ 
public class Capturar_pantalla { 
    
    public static void main(String [] args){ 
        try { 
            captureScreen("C:\\archivo.png"); 
        } catch (Exception ex) { 
            Logger.getLogger(Capturar_pantalla.class.getName()).log(Level.SEVERE, null, ex); 
        } 
    } 
    public static void captureScreen(String fileName) throws Exception { 
  
   Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); 
   Rectangle screenRectangle = new Rectangle(screenSize); 
   Robot robot = new Robot(); 
   BufferedImage image = robot.createScreenCapture(screenRectangle); 
   ImageIO.write(image, "png", new File(fileName)); 
  
} 
}
y lo guardan en “archivo.png” o el que deseen para este caso deje el método como static pero no es necesario.

Generar PDF

El propósito de este post es generar un pdf sencillo mediante Java.

Nos vamos a la página http://sourceforge.net/projects/itext/files/ y descargamos iText. La importamos en nuestro proyecto yendo al menú Biblioteca—agregar archivo jar y seleccionamos los 2 jar.

El código

Se trata de una aplicación muy sencilla que escribirá en el pdf un párrafo con un saludo y otro con la fecha actual.

import com.itextpdf.text.Document;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.PdfWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.Date;


public class GeneratePDF {

    public static void main(String[] args) {
        try {
            OutputStream file = new FileOutputStream(new File("C:\\Test.pdf"));

            Document document = new Document();
            PdfWriter.getInstance(document, file);
            document.open();
            document.add(new Paragraph("Hola a todos!"));
            document.add(new Paragraph(new Date().toString()));

            document.close();
            file.close();

        } catch (Exception e) {

            e.printStackTrace();
        }
    }
}

cambiar icono jframe


1)El ícono debe ser una imagen de extensión PNG. Esto se hace más fácil, ya que conseguir una figura y convertirlo en formato .ico es muy complicado. Los PNG nos ayudan bastante.
2)La imagen que será el ícono debe estar dentro del paquete de fuentes, como si fuera una clase más. Si estuviera dentro de un paquete, sería mucho mejor.


3)En el código del JFrame que vamos a poner el ícono, sobreescribimos el método getIconImage() conteniendo el siguiente código: (notar cómo se está llamando a la imagen .png)
public Image getIconImage() {
Image retValue = Toolkit.getDefaultToolkit().
getImage(ClassLoader.getSystemResource("resources/icono.png"));
return retValue;
}
4)En la vista de diseño del JFrame, lo seleccionamos y vamos sus propiedades, buscamos la propiedad "iconImagen" y hacemos clic en el botón de puntos suspensivos. Se mostrará una ventana de diálogo como esta:
 


De la lista desplegable, seleccionamos "Valor de componente existente". Esto hará que cambie la ventana a la siguiente forma:


Seleccionamos la opción "Propiedad" y hacemos clic en el botón de puntos suspendidos. Aparecerá una ventana de diálogo más pequeña, y seleccionamos la propiedad "iconImage" que aparece ahí.
 

le damos Clic en Aceptar, y se verá así:


y nuevamente clic en "Aceptar" para cerrar la ventana de selección de imagen.
Ahora, veremos que las propiedades del JFrame ya tiene un nuevo valor


Ejecutamos la aplicación con el JFrame y veremos nuestro JFrame con un ícono diferente.