Mostrando entradas con la etiqueta Netbeans. Mostrar todas las entradas
Mostrando entradas con la etiqueta Netbeans. Mostrar todas las entradas

20 septiembre 2010

Capturando datos en una Tabla (Web)

Hola amigos, en esta ocasion publicaré  una interesante forma de manejar campos editables directamente en un tabla.. este post es principalmente para ayudar a un amigo visitante que ha tenido la necesidad de implemetar este metodo! (Saludos Juan)...


Inicialmente les mostraré un video para que vean los resultados del post:

Este post, lo estaré actualizando, con sus respectivas intrucciones, por ahora, les dejo el codigo fuente, para aquellos que deseen explorarlo...

WebObjectList 

pass: ecanaveras.blogspot.com

Nota: este post no esta en su version final, pendiente actualizaciones...

07 septiembre 2010

Netbeans 6.9.1 con Java FX

Hola Amigos, hace mucho no posteaba, he estado un poco ocupado, pero he recordado que tengo mucho que aportar y ahora seguiré con los post...

bueno entrando en materia, ya tenemos disponible la nueva version de Netbeans, en el idioma que deseen..

aca el link de descarga: Descargar Netbeans 6.9.1

y para aquellos que les gusta probar los mas reciente, aca tienen el link para Netbeans 6.10 M1 que en realidad deberia llamarse "Netbeans 7.0", bueno es mi opinion.

link: Descargar Netbeans 6.10 M1

Saludos...

28 diciembre 2009

Netbeans 6.8


NetBeans IDE 6.8 es el primer IDE en ofrecer compatibilidad para todas las especificaciones de Java EE 6, con compatibilidad mejorada para JSF 2.0/Facelets, Java Persistence 2.0, EJB 3.1 (incluido el uso de EJB en aplicaciones web), servicios web RESTful y GlassFish v3. También lo recomendamos para desarrollar con el último JavaFX SDK 1.2.1 y para crear aplicaciones web PHP con la nueva versión PHP 5.3 o con la estructura Symfony.
Nuestra exclusiva integración del proyecto Kenai, un entorno de colaboración para alojar proyectos de código abierto, incorpora ahora una compatibilidad total con JIRA, y mejor integración con la mensajería instantánea y el seguimiento de incidencias. De igual modo se han agregado funciones al Maven de IDE e integración de bases de datos; también se ha mejorado el editor y la integración de herramientas de Ruby, Groovy y proyectos de C/C++.

Pueden descargarlo desde Netbeans.org

28 octubre 2009

NetBeans IDE 6.8 Beta

Ya esta disponible la versión Beta de NetBeans 6.8
http://www.netbeans.org/community/releases/68/

Algunas características:

JavaFX SDK 1.2.1
Web Projects con JavaServer Faces 2.0 (Facelets)
Java Enterprise Edition 6

y mucho mas...

05 julio 2009

Ejemplos de Aplicacion Web

Anteriormente cuando comenzé a crear aplicaciones web, en ocasiones intentaba usar algunos componentes ("de poco uso") de la libreria woodstock en Netbeans, y desconocia la utilidad de muchas de sus propiedades!!!

En el Web Developer Resource Center http://webdev2.sun.com/ encontre una Aplicacion de ejemplo de todos estos componentes, nos permite ver el codigo fuente, tanto del JSP como de la clase Java, resulta muy util, ya que podemos ver el funcionamiento de los componentes y la forma como deben usarse!!

aca esta la aplicacion de ejemplo: http://webdev2.sun.com/example/

...seguro que aprenderan algunos trucos que quizas desconocian de los componentes Woodstock!!!

ademas en el Web Developer Resource Center podrán encontrar ejemplos de otras tecnologias, Dynamic Faces, Ajax etc.

26 junio 2009

Usando ObjectListDataProvider

En muchos casos tenemos la necesitad de mantener nuestros datos en memoria....
para luego guardar lo que deseamos.

En esta entrada les mostraré un tecnica para realizar esto, usando Netbeans y Glassfish... y la ayuda de una clase muy poderoza ObjectListDataProvider, aqui veran una de los tantos usos que le podemos dar en una aplicacion Web...


Lo primero que haremos será crear un Nuevo Proyecto, en el IDE Netbeans, nos dirigimos a File > New Project... nos aparece la sgte ventana, en Categories escogemos Java Web y en Projects > Web Application damos clic en Next


Luego aparece esta nueva ventana donde nombramos al proyecto en nuestro caso WebObjectList y damos clic en Next


Aparece esta nueva ventana donde escogemos el servidor, en nuestro caso Glassfish y damos clic en Next


Luego escogemos el Frameworks, seleccionamos Visual Web JavaServer Faces y damos clic en Finish

Despues de los pasos anteriores, ceramos la clase que nos permitirá agregar datos al ObjectListDataProvider, En la ventana Projects, seleccionamos nuestra Aplicacion, WebObjectList, creamos un nuevo Java Package (paquete), y lo nombramos myClass...

despues de haber creado el paquete procedemos a crear nuestra clase, sobre myClass damos clic derecho New > Java Class, aparece la sgte ventana, la nombramos dataNames y cliqueamos Finish


agregamos el sgte cdgo:

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

package myClass;

/**
*
* @author ecanaveras
*/
public class dataNames {

public dataNames(String nombre, String apellidos) {
this.nombre = nombre;
this.apellidos = apellidos;
}

private String nombre;

public String getNombre() {
return nombre;
}

public void setNombre(String nombre) {
this.nombre = nombre;
}

private String apellidos;

public String getApellidos() {
return apellidos;
}

public void setApellidos(String apellidos) {
this.apellidos = apellidos;
}

}

Luego repetimos el proceso sobre el paquete y esta vez crearemos una extencion de la clase ObjectListDataProvider llamada dataNamesDataProvider, sgte imagen:

agregamos el sgte cdgo:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package myClass;

import com.sun.data.provider.impl.ObjectListDataProvider;
import java.util.ArrayList;
import java.util.List;

/**
*
* @author ecanaveras
*/
public class dataNamesDataProvider extends ObjectListDataProvider {

private List<dataNames> dataList = new ArrayList<dataNames>();

//Especificamos que la DataProvider deber ser Tipo dataNames
    public dataNamesDataProvider() {
this.setList(dataList);
this.setObjectType(dataNames.class);
}

//Agrega datos al DataProvider
    public void addNames(dataNames newData){
dataList.add(newData);
}

}

Ahora crearemos una instancia de la clase que acabamos de crear, nos dirigimos a la ventana Projects, seleccionamos nuestro proyecto, y abrimos Source Packages > webobjectlist > SessionBean1.java, y agregamos en el final el sgte Codigo:
private dataNamesDataProvider namesDataProviver = new dataNamesDataProvider();

public dataNamesDataProvider getNamesDataProviver() {
return namesDataProviver;
}

public void setNamesDataProviver(dataNamesDataProvider namesDataProviver) {
this.namesDataProviver = namesDataProviver;
}

Luego creamos una nueva Visual Web JSF Page, agregamos los componentes necesarios...

2 Texfield 1 button 1 table

En los compenentes que se usarán en el codigo Java, damos clic derecho y escogemos Add Binding Attribute, en este caso los textFields y el TableRowGorup de la tabla

Generamos (Build) nuestro proyecto, este paso es necesario para que JSF Page se actualize y conozca de la existencia del ObjectListDataProvider (namesDataProviver) del SessionBean1

ahora regresamos a nuestro JSP, sobre la tabla damos clic derecho, escogemos Table Layout aparece la sgte ventana, en el dropDown Get Data From, selecionamos namesDataProvider, e inmediatamente aparecen los campos de nuestra clase dataNames, y agregamos una nueva columna con un boton (boton Quitar).


nos queda algo parecido a esto: (lo verde es un gridPanel jejeje)

Ahora agregaremos registros a la tabla, en realidad al ObjectListDataProvider, entramos en la accion del boton "Agregar" haciendo doble clic sobre el mismo, y escribimos el sgte codigo:
public String btnAgregar_action() {
//Validar lo campos
    String name = txtName.getText() != null ? txtName.getText().toString() : "";
String apellido = txtApellido.getText() != null ? txtApellido.getText().toString() : "";
//Crear nuevos datos
    dataNames datos = new dataNames(name, apellido);
//Agregar registros al DataProvider
    getSessionBean1().getNamesDataProviver().addNames(datos);
getSessionBean1().getNamesDataProviver().commitChanges();
txtName.setText(null);
txtApellido.setText(null);

System.out.println("Registro add");
return null;
}

Para Quitar resgistros, en la vista Design del JSP nos vamos a la ventana Navigator y navegamos hasta la columna que tiene el boton (Quitar) , damos clic derecho , escogemos Edit Action Event Handler y escribimos el sgte codigo:
public String btnQuitar_action() {
//Quitar Registros

    RowKey rk = getTableRowGroup1().getRowKey();

getSessionBean1().getNamesDataProviver().removeObject(rk);
getSessionBean1().getNamesDataProviver().commitChanges();
return null;
}

Listo con esto ya hemos culminado con la presentacion del ObjectListDataprovider.

si desean el codigo fuente del proyecto aca lo dejo a disposicion!:

WebObjectList.zip

y como siempre les dejo un video del funcionamiento del la Aplicacion desarrollada en esta entrada.



Dejen sus comentarios... cualquier duda me comentan!!

09 junio 2009

Tabla con textfield editables

Muchas veces intente, tomar los valores de un textField incrustado a un tabla, pero siempre obtenia el valor del dataProvider...

bueno, en este post les diré el truquito para tomar esos valores... que pueden ser de cualquier componente... aunque no lo he probado con todos (solo texField y dropDonws), pero estoy casi seguro que si...

He aqui una imagen del resultado...



Entremos en materia...

Este ejemplo fue realizado con Netbeans 6.5 y GlassFish v2

lo primero que tienen que hacer es crear una nueva pagina JSP


luego arrastran un componente table, lo enlazan con un RowSet... puede ser cualquiera


una vez tengan lista esta parte, solo resta cambiar los componentes que por defecto coloca la tabla, en este caso staticText, lo cambian por textField, esto en las columnas que desea editar...


luego nos dirimos a la ficha Java (a el codigo java de la pagina en cuestion) y agregamos por cada columna editable dos propiedades, en este caso direccion y nDireccionMap de la sgte forma:


//direccion
public String getDireccion() {
    String dirTable = getValue("#{currentRow.value[\'CampoDataProvider\']}").toString();
    TableRowDataProvider rowData = (TableRowDataProvider) getBean("currentRow");
    if (rowData == null) {
        return dirTable;
    } else {
      String rowId = rowData.getTableRow().getRowId();
      String nDir = (String) this.getNDireccionMap().get(rowId);
      if (nDir == null) {
         return dirTable;
      } else {
        return nDir;
      }
    }
}

public void setDireccion(String valor) {
   TableRowDataProvider rowData = (TableRowDataProvider) getBean("currentRow");
   if (rowData != null) {
      String rowId = rowData.getTableRow().getRowId();
      this.getNDireccionMap().put(rowId, valor);
   }
}


//nDireccionMap
private Map nDireccionMap = new HashMap();

public Map getNDireccionMap() {
  return this.nDireccionMap;
}

public void setNDireccionMap(Map nDir) {
  this.nDireccionMap = nDir;
}



Ojo deben reemplazar la frase CampoDataProvider, por el nombre del campo del que tomaran el valor en el dataProvider, ose el valor a Editar.

Ej:


String nomCliente = getValue("#{currentRow.value[\'nombreCliente\']}").toString();

En este caso mi objetivo es retornar un String, pero pueden hacerlo con cualquier tipo, ya sea Int, Double, Boolean etc...

luego de haber agregado las variables necesarias en el codigo java, nos devolvemos a la vista de Diseño... nos dirigimos a la tabla que habiamos agregado anteriormente, le damos clic y pasamos a la ventana Navigator, seleccionamos el objeto correspondiente en este caso un textField, luego pasamos a la ventana Propiedades , buscamos la propiedad text...

le damos sobre los tres punticos [...] y nos aparece lo sgte:

Escogemos Use binding en la parte superior, y nos debe aparecer la variable que agregamos en codigo java, en este caso direccion, la seleccionamos y le damos en OK

Listo y con esto ya podemos acceder a lo valores que toma el textField....

Bueno se preguntaran, pero como tomo los valores??? jajaja no se preocupen ahora le muestro como hacerlo...

Despues de haber agregado los atributos de los objetos en cuestion, en este caso el tableRowGroup, ponemos un boton en el Jsp, y en el action del boton quedaria algo asi:
     public String button_action() {
        //Este caso deseo recorrer todo lo que esta en la tabla
        RowKey[] allRows = getTableRowGroup1().getRowKeys();
        for (int i = 0; i < allRows.length; i++) {
           RowKey rowKey = allRows[i];
           String direccion = ((String) this.nDireccionMap.get(rowKey.getRowId())).toString();
           info("El valor del Textfiel es: " + direccion);
        }
        return null;
     }
Bueno con esto habremos culminado... le dejo un ejemplo que he implementado en mis proyectos... es muy util ahorra mucho tiempo!!!

Amigos... se me olvidaba tambien pueden editar los valores del textField o del componente que usen, de la sgte forma:
public String button_action() {
    //Este caso deseo recorrer todo lo que esta en la tabla
    RowKey[] allRows = getTableRowGroup1().getRowKeys();
    for (int i = 0; i < allRows.length; i++) {
RowKey rowKey = allRows[i];
        //Editanto todos los textField de la tabla...
        this.nDireccionMap.put(rowKey.getRowId(),"Aqui el valor que quieran");
}
    return null;
}

Ahora les dejo una muestra en video de como funciona!!! Dejen sus comentarios, cualquier cosa con gusto les ayudaré. jejeje suerte...


05 marzo 2009

Aplicacion Web con Netbeans 6.5, Ireport y jasperReports

Este tema esta basado en la configuracion de Netbeans con jasperReport

Despues de haber configurado Netbeans debemos:

Configurar el Proyecto


En el IDE, enla pestaña Proyects damos clic derecho sobre nuestra Aplicacion Web "Proyecto" y selecionamos Propiertes, nos aparecera la sgte ventana:

En el marco de Categorias selecionamos Libraries, en el lado derecho damos clic en el boton Add Library, y escogemos la biblioteca que hemos creado jasper-reports-1.3.3


presionamos el boton Add Library...

4. Configurar el servidor de Aplicaciones (Glassfish).

En el explorador de windows, nos vamos a la carpeta donde tenemos instalado nuestro servidor de aplicaciones, y luego hasta el subdirectorio de nuestro dominio config, en mi caso "C:\Archivos de programa\glassfish-v2ur2\domains\domain1\config", y editamos el archivo server.policy...


Agregamos el siguiente segmento de Codigo:



// Librerias Jasper

grant codeBase "file:/C:/aplicaci/Syslex/build/web/-"{

permission java.util.PropertyPermission "*", "read,write";

permission java.lang.RuntimePermission "createClassLoader";

permission java.lang.reflect.ReflectPermission "suppressAccessChecks";

permission java.lang.RuntimePermission "accessDeclaredMembers";

permission java.lang.RuntimePermission "getProtectionDomain";

};

grant {

permission java.lang.RuntimePermission "createClassLoader";


Ojo, deben reemplazar la ruta de color rojo por la de su proyecto.!

Ahora, nos regresamos al proyecto y agregamos una nueva carpeta llamada reportes en la ruta scr


En el proyecto nos vamos a Web Pages > WEB-INF y abrimos el archivo web.xml ...


...en la Ficha Servlets, damos clic en el boton ubicado en la esquina superior derecha Add Servlet Element


Escribimos lo sgte:

  • Servlet Name: ImageServlet
  • ServletClass: net.sf.jasperreports.j2ee.servlets.ImageServlet
  • URL Pattern(s): /images

y damos OK

En el proyecto creamos una nueva carpeta con el nombre images, en la ruta web\resources


En el IDE, nos vamos a la Pestaña Files selecionamos nuestro proyecto y abrimos el archivo build.xml


y agregamos antes de la etiqueta </project> el sgte codigo:



<property name="jrc.home"
value="c:\descargas\java\jasperreports-1.3.3"/>
<path id="jrc.classpath">
<fileset dir="${jrc.home}/dist"
includes="*.jar"/>
<fileset dir="${jrc.home}/lib"
includes="*.jar"/>
</path>

<taskdef name="jrc"
classname="net.sf.jasperreports.ant.JRAntCompileTask">

<;classpath refid="jrc.classpath"/>
</taskdef>

<target name="-post-compile"
description="Compile all Jasper Reports Definitions">

<mkdir dir="${build.web.dir}/WEB-INF/reportes"/>


<jrc srcdir="src/reportes"
destdir="${build.web.dir}/WEB-INF/reportes">
<classpath
refid="jrc.classpath"/>
<include
name="*.jrxml"/>
</jrc>

<delete>

<fileset dir="${build.web.dir}/WEB-INF/classes"
includes="*.jrxml"/>
</delete>
</target>


Ojo, deben reemplazar la ruta de color rojo por la del proyecto jasper-reports-1.3.3 !


Por último, abrir el ApplicationBean1.java y agregar el siguiente código al final






/**
* <p>Prefix to the resource name for compiled reports.</p>
*/

private static final String PREFIX = "/WEB-INF/reportes/";
/**
* <p>Suffix to the resource name for compiled reports.</p>

*/

private static final String SUFFIX = ".jasper";
/**
* <p>Valid content types for reports that we can produce.</p>
*/

private static final String[] VALID_TYPES = {"text/html", // Standard HTML representation
"application/pdf", // Adobe Portable Document Format
"application/rtf" //Microsoft Word RTF
};

/**
* <p>Generate the specified report, in the specified output
* format, based on the specified data.</p>
*
* @param name Report name to be rendered
* @param type Content type of the requested report ("application/pdf"
* or "text/html")
* @param data <code>ResultSet</code> containing the data to report
*
* @exception IllegalArgumentException if the specified
* content type is not recognized
* @exception IllegalArgumentException if no compiled report definition
* for the specified name can be found
*/

public void jasperReport(String name, String type) {
jasperReport(name, type, new HashMap());
}

//Editado by elcapi
public void jasperReport(String name, String type, ResultSet data) {
jasperReport(name, type, new HashMap());
}

/**
* <p>Generate the specified report, in the specified output
* format, based on the specified data.</p>

*
* @param name Report name to be rendered
* @param type Content type of the requested report ("application/pdf"
* or "text/html")
* @param data <code>ResultSet</code> containing the data to report
* @param params <code>Map</code> of additional report parameters
*
* @exception IllegalArgumentException if the specified
* content type is not recognized
* @exception IllegalArgumentException if no compiled report definition
* for the specified name can be found
*/

public void jasperReport(String name, String type, ResultSet data, Map params) {
if (!isReporte(type)) {
return;
}
ExternalContext econtext = getExternalContext();

// Fill the requested report with the specified data
JRResultSetDataSource ds = new JRResultSetDataSource(data);
JasperPrint jasperPrint = nextPrint(this.compilarReporte(econtext, name), params, null, ds, 1);
generarReporte(econtext, type, jasperPrint);
}

//Reportes que no necesitan ResulSet...
public void jasperReport(String name, String type, Map params) {

if (!isReporte(type)) {
return;
}
ExternalContext econtext = getExternalContext();
Connection conx = this.getConexion();
JasperPrint jasperPrint = nextPrint(this.compilarReporte(econtext, name), params, conx, null, 0);

// Configure the exporter to be used, along with the custom
// parameters specific to the exporter type
generarReporte(econtext, type, jasperPrint);
}

private Boolean isReporte(String type) {
// Validate that we recognize the report type
// before potentially wasting time filling the
// report with data
boolean found = false;
for (int i = 0; i < VALID_TYPES.length; i++) {
if (VALID_TYPES[i].equals(type)) {
found = true;
break;
}
}
if (!found) {
throw new IllegalArgumentException("Invalid report type '" + type + "' requested");
}
return found;
}

private InputStream compilarReporte(ExternalContext econtext, String name) {
InputStream stream = econtext.getResourceAsStream(PREFIX + name + SUFFIX);
if (stream == null) {
throw new IllegalArgumentException("Unknown report name '" + name + "' requested");
}
return stream;
}

private Connection getConexion() {
Context ctx;
Connection conx;
try {
ctx = new InitialContext();
DataSource dataSource = (DataSource) ctx.lookup("java:comp/env/jdbc/Name_Conexion");
conx = dataSource.getConnection();
} catch (Exception e) {
throw new FacesException(e);
}
return conx;
}

private JasperPrint nextPrint(InputStream stream, Map params, Connection conx, JRResultSetDataSource ds, int opcion) {
JasperPrint jasperPrint = null;
try {
switch (opcion) {
case 0:
jasperPrint = JasperFillManager.fillReport(stream, params, conx);
break;
case 1:
jasperPrint = JasperFillManager.fillReport(stream, params, ds);
break;
}
} catch (RuntimeException e) {
throw e;
} catch (Exception e) {
throw new FacesException(e);
} finally {
try {
stream.close();
} catch (IOException e) {
log(e.getMessage());
}
}
return jasperPrint;
}

private void generarReporte(ExternalContext econtext, String type, JasperPrint jasperPrint) {
JRExporter exporter = null;
HttpServletResponse response = (HttpServletResponse) econtext.getResponse();
FacesContext fcontext = FacesContext.getCurrentInstance();
try {
response.setContentType(type);
if ("application/pdf".equals(type)) {
exporter = new JRPdfExporter();
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, response.getOutputStream());
} else if ("text/html".equals(type)) {
exporter = new JRHtmlExporter();
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_WRITER, response.getWriter());
// Make images available for the HTML output
HttpServletRequest request = (HttpServletRequest) fcontext.getExternalContext().getRequest();
request.getSession().setAttribute(ImageServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE, jasperPrint);
exporter.setParameter(JRHtmlExporterParameter.IMAGES_MAP, new HashMap());
// The following statement requires mapping /image
// to the imageServlet in the web.xml.
//
// This servlet serves up images including the px
// images for spacing.
//
// Serve up the images directly so we
// don't incur the extra overhead associated with
// with a JSF request for a non-JSF entity.
exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI, request.getContextPath() + "/image?image=");
} else if ("application/rtf".equals(type)) {
exporter = new JRRtfExporter();
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, response.getOutputStream());
}
} catch (RuntimeException e) {
throw e;
} catch (Exception e) {
throw new FacesException(e);
}

// Enough with the preliminaries ... export the report already
try {
exporter.exportReport();
} catch (RuntimeException e) {
throw e;
} catch (Exception e) {
throw new FacesException(e);
}

// Tell JavaServer Faces that no output is required
fcontext.responseComplete();
}

26 enero 2009

Netbeans 6.5 y iReport

El siguiente blog, muestra la forma en que podemos realizar reportes desde ireport y utilizarlos en nuestra aplicacion web ejecutandose en glassfish.

requisitos para implementar los reportes:

-Netbeans 6.5
-iReport 2.0.1
-jasperreports-1.3.3


deben descargar el proyecto jasperreports-1.3.3, fijense en la carpeta en donde ubican dicho proyecto, ya que usaremos la ruta posteriormente.

ahora entremos en materia

1. debemos crear la libreria en Netbeans, en el IDE nos dirigimos a tools > Libraries
nos aparecerá el administrador de Librerias.



damos clic en New Library, escribimos en nombre de la libreria, en este caso jasper-reports-1.3.3 y selecionas el tipo Class Libraries.

Una vez creada la libreria, procedemos a agregarles los .jar correspondientes...
en el administrador de librerias, seleccionamos la jasper-reports-1.3.3, damos clic en el boton Add JAR/Folder

Buscamos el directorio donde se encuentra el proyecto jasperreports-1.3.3, buscar el subdirectorio dist y selecionar el archivo jasperreports-1.3.3.jar y agregamos...



repetimos el paso anterior, pero esta vez, nos vamos al subdirectorio lib y selcionamos los siguientes archivos:

  • commons-beanutils-1.7.jar
  • commons-collections-2.1.jar
  • commons-logging-1.9.2.jar
  • commons-digester-1.7.jar
  • commons-javaflow-20060411.jar
  • Itext-1.3.1.jar
y damos clic al boton Add JAR/Folder...


2. Ahora tenemos que indicarle a Netbeans que tipo de archivos tiene que asociar. Nos dirgimos a tools > Options nos aparecerá la siguiente ventana.


luego selecionamos Miscellaneous > Files, damos clic en New..
en el cuadro de dialogo colocamos jrxml (el tipo de archivo fuente de ireport), y presionamos OK


En las opciones del dropDown Associated File Type (MIME), seleccionamos XML Files (application/xml) y presionamos


Con los pasos anteriores tenemos netbeans configurado con jasperreports, si desemos configurar nuestro proyecto , aca esta la segunda parte del tema Configurar el proyecto