Libreria requerida para ejecutar reportes compilados de JasperReport

Con la nueva versión de JasperReport studio me vi obligado a buscar las librerías que requiere para la ejecución de los reportes copilados (reporte.japer),  desde la wiki de JasperReport encontré una información que me sirvió de referencia aunque después tuve que encontrar a prueba y error las que realmente necesite para la ejecución de los reportes, a continuación listo la librerías necesarias:

Asta aquí tenemos  las librerías necesarias para poder ejecutar el reporte y visualizar en pantalla o impresora,  si queremos que el reporte envié la salida de visualización a un archivo se debe agregar las siguientes librerías:

 

Con esto ya podemos visualizar los reportes de JasperReport en aplicaciones java. si tienen algún comentario no duden en compartirlo.

Anuncios

Crear una clase que identifique si es una letra en mayuscula o minuscula

En muchos login piden que unas que al menos un carácter sea en mayúscula y se me dio la curiosidad de como comprobar si un carácter era en mayúscula o en minúscula pero no encontré alguna clase en java que lo hiciera así que tuve que improvisar una.

esta clase tiene dos métodos uno para verificar si es minúscula y otro si es mayúscula, cada método devuelve un verdadero si es minúscula o mayúscula respectivamente. aquí dejo el codigo

public class CharIsloverIsupper {
private String cavecedario= “abcdefghijklmnñopqrstuvwxyz”;

public boolean isMinus(char caracter){
for(int i=0;i<cavecedario.length();i++){
if(cavecedario.charAt(i)==caracter)return true;
}
return false;
}
public boolean isMayus(char caracter){
for(int i=0;i<cavecedario.length();i++)
if(cavecedario.toUpperCase().charAt(i)==caracter)return true;
return false;
}

}

Crear una clase para barra de herramientas con Jtoolbar

Bueno les comento, el poder crear esta Barra de Herramientas,  me llevo muchos días de investigación, si es fácil agregar una Jtoolbar a cada formulario e irla armando con botón(JButon) en cada formulario. pero cuanto tiempo les llevara para una aplicación que lleva mas de 20 formularios.

Como verán esta barra de herramientas  hereda de javax.swing.JToolBar, dentro de ella definimos una clase interna que crea los botones, esta clase interna hereda de javax.swing.JButton.

Dentro del constructor de la barra de herramientas llamamos a un metodo(inibutton()), que se encarga de definir los botones que irán en la barra de herramientas.

Como verán utilizo la clase Action y AbstractAction, esto es para poder definir en el contenedor de la barra de herramientas las operaciones que aran cada boton cuando sean ejecutados.  si ustedes tiene varios formularios que guarda datos en  tablas diferentes de una base de datos la operación de agregar registro no puede se la misma, al igual la operación de guardar ya que cada formulario tendrá una tabla diferente.

a continuación el código de la clase, este solo se agrega a un contenedor, si utilizan netbeans solo lo seleccionan y lo arrastran al contenedor(Jframe, JDialogo….)

import java.awt.Dimension;
import java.awt.event.ActionEvent;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.SwingConstants;

public class BarraHerramienta extends javax.swing.JToolBar{
public JButton cmdNewReg,cmdSaveReg,cmdCloseFrm,;
protected  Action atnNew,atnSave,atnClose;
public BarraHerramienta() {
super(“BarraHerramienta”);
inibutton();
add(cmdNewReg);
add(cmdSaveReg);
addSeparator();
add(cmdCloseFrm);
setRequestFocusEnabled(false);
setFocusable(false);
setFloatable(false);
setRollover(false);
}
private void inibutton(){
atnNew = new AbstractAction(“Nuevo”, new ImageIcon(getClass().getResource(“/imagenes/btooliconnew.png”))){
public void actionPerformed(ActionEvent e) {
;
}
};
atnEdit = new AbstractAction(“Editar”, new ImageIcon(getClass().getResource(“/imagenes/btooliconedit.png”))){
public void actionPerformed(ActionEvent e) {
;
}
};
atnSave = new AbstractAction(“Guarda”, new ImageIcon(getClass().getResource(“/imagenes/btooliconsave.png”))){
public void actionPerformed(ActionEvent e) {
;
}
};
atnClose = new AbstractAction(“Cerrar”, new ImageIcon(getClass().getResource(“/imagenes/btooliconclose.png”))){
public void actionPerformed(ActionEvent e) {
;
}
};

cmdNewReg= new CmdBar(atnNew, “Agrega un Registro”);
cmdSaveReg= new CmdBar(atnSave,”Guarda la modificaciones del formulario”);
……

cmdCloseFrm= new CmdBar(atnClose,”Cierra el formulario”);
}
public void opCmd(ActionEvent atn){
//      String nombre= ((JButton) atn.getSource()).getText()
System.out.println(((JButton) atn.getSource()).getName());
}

class CmdBar extends JButton
{
Dimension d = new Dimension(60,55);
public CmdBar(Action atnCmd, String cToolTip) {
super((Icon) atnCmd.getValue(Action.SMALL_ICON));
setName((String) atnCmd.getValue(Action.NAME));
setPreferredSize(d);
…….

setToolTipText(cToolTip);
addActionListener(atnCmd);
setRequestFocusEnabled(false);

}

}

}

Referencias

http://es.wikipedia.org/wiki/Programaci%C3%B3n_orientada_a_objetos

http://guniu.mx/progravanzada/unidad1.2.html

http://javapiola.blogspot.com/2009/11/como-utiliza-jtoolbar-en-java.html

Crear una clase para modificar archivos de propiedades

La clase Properties representa un conjunto persistente de propiedades. Las propiedades se pueden guardar en un stream o cargado de un stream . Cada clave y su valor correspondiente en la lista de propiedades es una cadena.

.properties es una extensión predeterminada para archivos de propiedad utilizados principalmente en las tecnologías relacionadas con Java para almacenar los parámetros configurables de una aplicación.

Al ser guardado la propiedad se almacena  de la siguiente manera:  key=value, key = value, key:value, y key value

a continuación la clase para leer y escribir en el archivo de propiedad

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.util.Properties;

public class AdminFileConf {
String cNameFileConf=”archivo.conf”; // se cambio la extension del archivo de .properties a .conf
public String readFileConf(String cNamePropiedad){
String cValuePropiedad=””;
Properties propiedad = new Properties();
try {
propiedad.load(new FileInputStream(cNameFileConf));
cValuePropiedad=propiedad.getProperty(cNamePropiedad);
}catch(FileNotFoundException e){
System.out.println(e.getMessage());
}catch(Exception e){
System.out.println(e.getMessage());
}
return cValuePropiedad.trim();
}

public boolean writeFileConf(String cNamePropiedad,String cValuePropiedad){
FileOutputStream fileConf=null;
BufferedInputStream bufferedFile=null;
Properties propiedad = new Properties();
try{
bufferedFile=new BufferedInputStream(new FileInputStream(cNameFileConf));
propiedad.load(bufferedFile);
fileConf = new FileOutputStream(cNameFileConf);
propiedad.setProperty(cNamePropiedad, cValuePropiedad);
propiedad.store(fileConf,null);
}catch(Exception e){
System.out.println(e.getMessage());
}finally{
try {
bufferedFile.close();
fileConf.close();
}catch(Exception e){
System.out.println(e.getMessage());
}

}
return true;
}

}

 

 

Crear una clase de Jpanel con imagen de fondo

buscando por la red me encontré muchos ejemplos, pero nada a lo que necesita, mi idea es siempre aprovecha el codigo para solo agregar, bueno a continuación lo que hice.
Primero cree la clase a partir del Jpanel, como vera se sobrescribe el método paintComponent, para que repinte la imagen


import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Rectangle;
import javax.swing.ImageIcon;

public class PnlFrmFondo extends javax.swing.JPanel{
public PnlFrmFondo(){
super();
setOpaque(false);
}

@Override
public void paintComponent(Graphics g) {
Dimension tam = getSize();
Rectangle r = g.getClipBounds();
g.setColor(this.getBackground());
g.fillRect (r.x, r.y, r.width, r.height);
ImageIcon imagen = new ImageIcon(getClass().getResource(“/imagenes/fondofrm.jpg”));
g.drawImage(imagen.getImage(),0,0, tam.width, tam.height, null);
super.paintComponent(g);
}

}

con este código no hay como no les ponga la imagen de fondo, a menos que le ponga mal la ubicación de la imagen , tomen en cuenta que donde creen al proyecto es “/”. “imagenes” es la capeta o directorio donde se encuentra la imagen a mostrar en el fondo. ejemplo

app/src/imagenes/fondofrm.jpg>

una ves que lo tenga solo lo agregar a un Jdialogo o a un JinternalFrame y listo.

En lo personal nunca agrego objetos directo a un objeto contenedor (jdialogo,Jframe, Jinterna……) prefiero agregar el jpanel y  a este agregar los objetos(Jlabel, Jtext……..)

Referencias

https://docs.oracle.com/javase/tutorial/uiswing/painting/closer.html

Como hacer una clase de un objeto Jlabel

Creare clase base label para una aplicación con las características mínimas para que al momento de hacer modificación en la clase se aplique en todos los label de la aplicacion, por ejemplo si quieres cambiar el tipo de letra, no tendrás que ir a cada label y cambiarla solo cambiaras la de la case base.

el nombre la clase le pondremos LblBase.java, recuerde que en java las clases van con las primera letra en mayúscula de cada palabra.
package bases;

public class LblBase extends javax.swing.JLabel{
public LblBase(){
setFont(new java.awt.Font(“Dialog”, 0, 14)); //Fuente sin negrilla y size 14
setForeground(java.awt.Color.black); //colo de la fuente negro
….

setText(“Etiqueta :”); // etiqueta con que saldra al agregarla – se puede modificar
}
}

ahora aremos el contenedor del objeto LblBase


/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package apps;

/**
*
* @author gacs
*/
public class contendor extends javax.swing.JDialog {

/**
* Creates new form contendor
*/
public contendor(java.awt.Frame parent, boolean modal) {
super(parent, modal);
initComponents();
}

/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings(“unchecked”)
// <editor-fold defaultstate=”collapsed” desc=”Generated Code”>
private void initComponents() {

lblBase1 = new clasesbase.LblBase();
lblBase2 = new clasesbase.LblBase();

setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);

lblBase1.setText(“Etiqueta 1 :”);

lblBase2.setText(“Etiqueta  2:”);

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(54, 54, 54)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(lblBase2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(lblBase1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap(267, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(46, 46, 46)
.addComponent(lblBase1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(lblBase2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(202, Short.MAX_VALUE))
);

pack();
}// </editor-fold>

/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/* Set the Nimbus look and feel */
//<editor-fold defaultstate=”collapsed” desc=” Look and feel setting code (optional) “>
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if (“Nimbus”.equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(contendor.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(contendor.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(contendor.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(contendor.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
//</editor-fold>

/* Create and display the dialog */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
contendor dialog = new contendor(new javax.swing.JFrame(), true);
dialog.addWindowListener(new java.awt.event.WindowAdapter() {
@Override
public void windowClosing(java.awt.event.WindowEvent e) {
System.exit(0);
}
});
dialog.setVisible(true);
}
});
}

// Variables declaration – do not modify
private clasesbase.LblBase lblBase1; // declaracion de las etiquetas
private clasesbase.LblBase lblBase2;// declaracion de las etiquetas
// End of variables declaration
}

 

Como podrán ver se cambio el text de la clasebase y se le dio una nueva descripción.

Las dos clase se hicieron en netbeans, para agregar la LblBase, solo tiene que seleccionarla y arrástrala a la posición que estará en el contenedor.