jueves, 19 de agosto de 2010

Trabajando con Joptionpane

Cuando no hemos estado descontentos con las minimas opciones del Joptionpane que solo nos da si ,no y cancel.
Pues pasando un parametro que es un objeto podremos redefinir las opciones a elegir.
Bueno veremos esto en este ejemplo.

package seleccionadordearchivos;

import javax.swing.JOptionPane;

/**
*
* @author JONATHAN
*/
public class Joption {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Object[] opciones={"Si quiero", "No quiero", "Quiza¡",
"Me da igual","??"};
int n=JOptionPane.showOptionDialog(null
,"Elija una de las cuatro","Titulo"
,JOptionPane.DEFAULT_OPTION
,JOptionPane.WARNING_MESSAGE
,null
,opciones,opciones[0]);
System.out.println("La opcion elegida es la "+n);
System.exit(0);
}
}

Aqui se imprime en consola el indice con lo cual podran saber que opcion se elegio

Trabajos de Impresion

Cuantas veces no hemos querido imprimir algun texto generado por un programa para un reporte simple pues con este ejemplo lo podran hacer.
Consta de 2 clases y usaremos PrinterJob.
Para este caso digitaremos un texto y cuando le demos al boton imprimir saldra el texto en papel hacia la impresora predeterminada.

Clase Impresora
package Imprimir;
/**
*
* @author JONATHAN
*/
/********************************************************************
* El siguiente programa es un ejemplo bastante sencillo de *
* impresion con JAVA. *
********************************************************************/
import java.awt.*;
/********************************************************************
* La siguiente clase llamada "Impresora", es la encargada de *
* establecer la fuente con que se va a imprimir, de obtener el *
* trabajo de impresion, la página. En esta clase hay un metodo *
* llamado imprimir, el cual recibe una cadena y la imprime. *
********************************************************************/
class Impresora {
Font fuente = new Font("Dialog", Font.PLAIN, 10);
PrintJob trabajo_impresion;
Graphics pagina;
/********************************************************************
* A continuacion el constructor de la clase. Aqui lo unico que *
* hago es tomar un objeto de impresion. *
********************************************************************/
Impresora() {
trabajo_impresion = Toolkit.getDefaultToolkit().getPrintJob(new Frame(), "Desde Java", null);
}
/********************************************************************
* A continuacion el metodo "imprimir(String)", el encargado de *
* colocar en el objeto grafico la cadena que se le pasa como *
* parámetro y se imprime. *
********************************************************************/
public void imprimir(String Cadena) {
//LO COLOCO EN UN try/catch PORQUE PUEDEN CANCELAR LA IMPRESION
try {
pagina = trabajo_impresion.getGraphics();
pagina.setFont(fuente);
pagina.setColor(Color.black);
pagina.drawString(Cadena, 60, 60);
pagina.dispose();
trabajo_impresion.end();
} catch (Exception e) {
System.out.println("LA IMPRESION HA SIDO CANCELADA...");
}
}//FIN DEL PROCEDIMIENTO imprimir(String...)
}//FIN DE LA CLASE Impresora

Ahora con la Clase principal.



package Imprimir;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.*;
/**
*
* @author JONATHAN
*/
//A CONTINUACION LA CLASE PRINCIPAL
public class Programa_Impresion extends JFrame {
String cadena;
JTextField campo;
JButton imprimir;
JLabel info;
Impresora impresion;
JPanel principal = new JPanel(new BorderLayout());
JPanel etiq = new JPanel(new FlowLayout());
JPanel dos = new JPanel(new FlowLayout());
//CONSTRUCTOR DE LA CLASE
Programa_Impresion() {
super("Muestra Simple de Impresión en JAVA...");
info = new JLabel("ESCRIBA ALGO EN EL CAMPO Y HAGA CLIC EN IMPRIMIR...");
cadena = new String();
campo = new JTextField(30);
imprimir = new JButton("IMPRIMIR");
dos.add(campo);
dos.add(imprimir);
etiq.add(info);
campo.setToolTipText("ESCRIBA ALGO AQUÍ...");
imprimir.setToolTipText("CLIC AQUI PARA IMPRIMIR...");
principal.add(etiq, BorderLayout.NORTH);
principal.add(dos, BorderLayout.CENTER);
getContentPane().add(principal);
//AJUSTO EL TAMAÑO DE LA VENTANA AL MINIMO
pack();
//NO PERMITO QUE PUEDAN CAMBIAR EL TAMAÑO DE LA VENTANA
this.setResizable(false);
//AHORA LA CENTRARA EN LA PANTALLA
Dimension pantalla, cuadro;
pantalla = Toolkit.getDefaultToolkit().getScreenSize();
cuadro = this.getSize();
this.setLocation(((pantalla.width - cuadro.width) / 2),
(pantalla.height - cuadro.height) / 2);

//LE AGREGAMOS EL EVENTO AL BOTON "imprimir"
imprimir.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
cadena = "";
cadena = String.valueOf(campo.getText());
if (!cadena.equals("")) {
impresion = new Impresora();//Instanciamos clase y se la mandamos al metodo imprimir
impresion.imprimir(cadena);
} else {
System.out.println("NO SE IMPRIME NADA EN BLANCO...");
}
campo.requestFocus();
campo.select(0, cadena.length());
}
});


}//FIN DEL CONSTRUCTOR
public static void main(String jm[]) {
Programa_Impresion p = new Programa_Impresion();//Instanciamos clase
p.show();
p.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent evt) {
System.exit(0);
}
});
}//FIN DEL MAIN
}//FIN DE LA CLASE PRINCIPAL

Como se daran cuenta instanciaremos la clase Impresora y le pasaremosmediante un metodo la cadena a imprimir ahora esto no se queda asi, lo pueden exterder osea lo que iria en el metodo podria ser algo mas grande.

Se los dejo a su imaginacion