Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Mi Manual Java FX PDF
Mi Manual Java FX PDF
2.x
Java FX 2.X
Dentro de este manual, usted aprender a manejar la Tecnologa Java Fx, para competir contra
aplicaciones desarrolladas en Microsoft Silver Light. Java Fx es el Homologo de Silver Light, Las
interfaces se ven mucho mejor, y permite efectos tipo Flash para dar un mejor aspecto al Front End de
las aplicaciones desarrolladas. Este manual lo desarrollo puesto que no existen manuales libres para
aprender. By : John Michel Rivera de Len. Lionheart 815@hotmail.com
https://www.facebook.com/groups/ebooksforjava/
By: John Michel Rivera de Len
JAVA FX 2.x
Java FX 2.X
La principal ventaja de Java FX es que la aplicacin puede correr
tanto en web, como en Stand Alone, sin necesidad de modificar
ninguna lnea de cdigo.
Java FX
Esto nos permite ser ms agiles en el desarrollo, puesto que ya no se
tiene que pensar en cmo presentar en web una aplicacin que era Con este manual, usted
para escritorio. Adems Java FX, puede correr en TVs, celulares, etc. aprender a manejar
Claro que solo en los dispositivos de nueva generacin. esta tecnologa que nos
JavaFX es una familia de productos y tecnologas pensados para el permite crear
desarrollo de Rich Internet Applications (RIAs). Este producto es la
aplicaciones
contrapartida de SUN, para las herramientas de desarrollo de este
tipo de aplicaciones, como Flash de ADOBE y Silverlight de visualmente ms
JAVA FX 2.x
MICROSOFT. Una de las caractersticas principales de esta tecnologa atractivas. La ventaja de
es la posibilidad del desarrollo de interfaces visuales para escritorio,
manejar Java FX y no
web, dispositivos mviles y TV; con todo el soporte de JAVA SE,
JAVA EE y JAVA ME. Silver Light, es que
dispone de la
portabilidad y todas las
ventajas inherentes de
Java.
https://www.facebook.com/groups/ebooksforjava/
By: John Michel Rivera de Len
JAVA FX 2.x
https://www.facebook.com/groups/ebooksforjava/
By: John Michel Rivera de Len
JAVA FX 2.x
https://www.facebook.com/groups/ebooksforjava/
By: John Michel Rivera de Len
Requerimientos
NOTA IMPORTANTE: Los mtodos pueden parecerte extraos, y aqu se explica de manera
general como funcionan, pero se incluye la carpeta de la documentacin del API con ejemplos
para comprender mejor cmo funcionan. As que no te desanimes si vez que no est explicado
todo el cdigo aqu ya que es mucha documentacin para meterla dentro de este manual.
Adjunto la carpeta con toda la documentacin necesaria para aprender a fondo.
Muy bien, lo primero que necesitamos para crear aplicaciones con Java FX, es el siguiente
software:
1. JDK 1.7
2. JRE 7
3. Librerias Apache FOP
4. Librerias Bar Code (para cdigo QR)
5. Conector MySQL
JAVA FX 2.x
Los paquetes de los cuales se componen el sistema estn asociados a distintas capas de
la arquitectura, a pesar de que algunos paquetes son implementados en distintas capas.
El siguiente diagrama describe la descomposicin de las capas de la arquitectura y se
observa como cada capa est relacionada con el MVC.
Vista
Capa de Presentacin
Controlador
Capa de Negocio
Modelo
4 Capa de Integracin
https://www.facebook.com/groups/ebooksforjava/
By: John Michel Rivera de Len
Arquitectura
JAVA FX 2.x
con el usuario as como mostrar por medio de una interfaz los resultados de las
transacciones realizadas.
Dentro de la capa de negociacin se definen las reglas del negocio. Estas reglas del
negocio definen la forma en cmo debe de manejarse la informacin entre otras
cosas, dichas reglas establecen los lmites que la aplicacin debe respetar.
https://www.facebook.com/groups/ebooksforjava/
By: John Michel Rivera de Len
JAVA FX 2.x
Paquetes
El sistema se compone de distintos paquetes que influyen en cada una de las capas de la
arquitectura, as mismo algunos paquetes se compone de otros sub-paquetes que
contienen utilidades o clases para su funcionamiento.
Paquete com.thegang.riping.view
https://www.facebook.com/groups/ebooksforjava/
By: John Michel Rivera de Len
Este hace uso de clases contenidas en el paquete de modelo y de POJOS para obtener
los datos.
Al loguearse correctamente es la interfaz principal donde se muestran las categoras de
las que el usuario puede hacer uso, estas tienen mtodos asociados para la E/S de
informacin de las respectivas bases de datos utilizadas.
Paquete com.thegang.riping.modelo
El paquete de modelo hace uso de un patrn de diseo de J2EE que implementa DAO,
DTO, FACADE, DELEGATE. Estos estn separados dentro de otros paquetes contenidos
dentro del paquete principal de modelo.
JAVA FX 2.x
Las clases contenidas dentro del paquete DAO se encargan de dar una independencia en
cuanto al acoplamiento con las bases de datos utilizadas, esto con es con la finalidad de
que si surgen cambios en la base de datos, solo tendr que modificarse los componentes
de este paquete.
El paquete DTO contiene las clases encargadas de actuar como intermediarias entre la
capa de presentacin y los servicios que provee la capa de negocios.
El paquete FACADE encapsula la lgica de negocio y la informacin asociada. La
informacin es mostrada por medio de interfaces y con esto se logra hacer transparente la
interaccin entre los componentes internos del programa.
https://www.facebook.com/groups/ebooksforjava/
By: John Michel Rivera de Len
Vista de Procesos
Desarrollando la aplicacion
https://www.facebook.com/groups/ebooksforjava/
By: John Michel Rivera de Len
Ya que estamos dentro, nos vamos a la seccin de Packaging y activamos la opcin copy
Dependent Libraries
JAVA FX 2.x
Aceptamos y ya estamos listos para empezar a programar.
Creamos una nueva clase llamada SwingInterop, esta contendr la pantalla del login, y una vez
aceptado, este se ocultara y mostrara el men principal de la aplicacin. Creamos las
variables del tamao de la aplicacin.
https://www.facebook.com/groups/ebooksforjava/
By: John Michel Rivera de Len
/**
*/
launch(args);
@Override
btn.layoutBoundsProperty();
btn.setTranslateX(-170);
btn.setTranslateY(200);
btn.translateXProperty();
btn.translateYProperty();
btn.relocate(50, 300);
btn.setText("Ingresar");
10
btn.setEffect(ref);
https://www.facebook.com/groups/ebooksforjava/
By: John Michel Rivera de Len
btn.setOnAction(new EventHandler<ActionEvent>() {
@Override
try{
JAVA FX 2.x
tab.setText("Proveedores");
tab.setClosable(false);
tab.setContent(new ProveedorView(name.getText(),new
LoginDAO().runQueryListUsersADMIN(name.getText(),pass.getText())).createProveedor(PANE
L_WIDTH_INT, PANEL_HEIGHT_INT));
tabPane.getTabs().add(tab);
root.getChildren().remove(btn);
root.getChildren().remove(name);
root.getChildren().remove(pass);
root.getChildren().remove(err);
root.getChildren().add(tabPane);
https://www.facebook.com/groups/ebooksforjava/
By: John Michel Rivera de Len
Se crea una nueva clase que se inserta dentro del tab, esta clase contiene dentro de un
nuevo StackPanel nuevos elementos para manejar la alta de proveedores.
ref.setFraction(0.9);
nomb.setTranslateX(-360);
nomb.setTranslateY(50);
nomb.setEffect(ef);
nomb1.setPromptText("Nombre de la persona...");
nomb1.setMaxSize(100, 20);
12
nomb1.setTranslateX(-280);
nomb1.setTranslateY(50);
https://www.facebook.com/groups/ebooksforjava/
By: John Michel Rivera de Len
Dentro del cdigo anterior se define el tamao del nuevo Panel y se incluyen sus
elementos, se puede agregar efectos como el Glow, para hacer un poco borroso un
elemento, o el de Refleccion para que debajo del botn se vea un reflejo.
Se agrega el botn para que registre los datos dentro de la B.D
Button btn = new Button();
btn.layoutBoundsProperty();
btn.setTranslateX(-250);
btn.setTranslateY(110);
btn.translateXProperty();
btn.translateYProperty();
btn.relocate(50, 300);
btn.setText("Registrar");
btn.setEffect(ref);
JAVA FX 2.x
btn.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
try{
p2.setProgress(0);
root.getChildren().add(ok);
p2.setProgress(100);
}catch(Exception e){JOptionPane.showMessageDialog(null, e);
}
} 13
});
https://www.facebook.com/groups/ebooksforjava/
By: John Michel Rivera de Len
root.setMinSize(widthDouble, heightDouble);
root.setPrefSize(widthDouble, heightDouble);
return root;
Hacemos lo mismo con las otras clases que son un CRUD, Create, Read, Update, Delete.
Esto se repite con el resto de las tabs, como son clientes, almance, etc.
Aqu utilizamos la librera Java Mail. Creamos una nueva clase como las anteriores, que se
inserta dentro de un tab, en el men principal.
14
final StackPane root = new StackPane();
https://www.facebook.com/groups/ebooksforjava/
By: John Michel Rivera de Len
ref.setFraction(0.9);
t.setTranslateY(-200);
t.setFill(javafx.scene.paint.Color.WHITESMOKE);
t.setEffect(ef);
mail.setTranslateX(-360);
mail.setTranslateY(-40);
JAVA FX 2.x
mail.setEffect(ef);
mail1.setPromptText("PDF Path");
mail1.setMaxSize(100, 20);
mail1.setTranslateX(-280);
mail1.setTranslateY(-40);
mail1.setOnMouseClicked(new EventHandler<MouseEvent>() {
@Override
mail1.setText(fc.showOpenDialog(null).getAbsolutePath());
15
https://www.facebook.com/groups/ebooksforjava/
By: John Michel Rivera de Len
});
Para enviar el correo utilizamos los mtodos de la librera Java Mail como sigue, en este caso
se realizo con un correo de Gmail, y los parmetros cambian si se realiza con Hotmail u otro.
btn.layoutBoundsProperty();
btn.setTranslateX(-250);
btn.setTranslateY(170);
btn.translateXProperty();
btn.translateYProperty();
btn.relocate(50, 300);
JAVA FX 2.x
btn.setText("Enviar");
btn.setEffect(ref);
btn.setOnAction(new EventHandler<ActionEvent>() {
@Override
try{
p2.setProgress(0);
try {
props.setProperty("mail.smtp.host", "smtp.gmail.com");
https://www.facebook.com/groups/ebooksforjava/
By: John Michel Rivera de Len
props.setProperty("mail.smtp.port", "587");
props.setProperty("mail.smtp.auth", "true");
session.setDebug(true);
//habe...el texto
texto.setText(tel1.getText());
JAVA FX 2.x
//el adjunto
adjunto.setFileName("Factura.pdf");
//juntar ambos
multiParte.addBodyPart(texto);
multiParte.addBodyPart(adjunto);
https://www.facebook.com/groups/ebooksforjava/
By: John Michel Rivera de Len
// A quien va dirigido
message.addRecipient(Message.RecipientType.TO, new
InternetAddress(rfc1.getText()));
message.setSubject(dir1.getText());
message.setContent(multiParte);
Transport t = session.getTransport("smtp");
t.connect(ide.getText(), name.getText());
t.sendMessage(message, message.getAllRecipients());
t.close();
} catch (MessagingException e) {
JOptionPane.showMessageDialog(null, e);
p2.setProgress(100);
});
btn.setOnMouseEntered(new EventHandler<MouseEvent>() {
18
@Override
https://www.facebook.com/groups/ebooksforjava/
By: John Michel Rivera de Len
p2.setProgress(0);
root.getChildren().remove(ok);
});
root.getChildren().add(id);
root.getChildren().add(ide);
root.getChildren().add(rfc);
root.getChildren().add(rfc1);
JAVA FX 2.x
root.getChildren().add(dir);
root.getChildren().add(dir1);
root.getChildren().add(tel);
root.getChildren().add(mail);
root.getChildren().add(mail1);
root.getChildren().add(tel1);
root.setMinSize(widthDouble, heightDouble);
root.setPrefSize(widthDouble, heightDouble);
return root;
19
https://www.facebook.com/groups/ebooksforjava/
By: John Michel Rivera de Len
Para mostrar los graficos, creamos una nueva clase, especificamos sus medidas y
creamos un Panel interno para agregar los elementos.
//articulos
https://www.facebook.com/groups/ebooksforjava/
By: John Michel Rivera de Len
series1.setName("2003");
series1.getData().add(new XYChart.Data(austria, 25601.34));
series1.getData().add(new XYChart.Data(brazil, 20148.82));
series1.getData().add(new XYChart.Data(france, 10000));
series1.getData().add(new XYChart.Data(italy, 35407.15));
series1.getData().add(new XYChart.Data(usa, 12000));
bc.getData().addAll(series1);
bc1.getData().addAll(series1);
JAVA FX 2.x
chart.getData().add(new PieChart.Data("uno", 50));
chart.getData().add(new PieChart.Data("dos", 50));
final Label caption = new Label("");
caption.setTextFill(Color.DARKORANGE);
caption.setStyle("-fx-font: 24 arial;");
caption.setTranslateX(e.getX());
caption.setTranslateY(e.getY());
caption.setText(String.valueOf(data.getPieValue())
+ "%");
21
https://www.facebook.com/groups/ebooksforjava/
By: John Michel Rivera de Len
});
}
@Override
public void handle(Event arg0) {
try {
bc.getData().remove(0);
JAVA FX 2.x
root.getChildren().remove(caption);
bc.getData().removeAll(series1);
bc.getData().removeAll(series1);
XYChart.Series series1 = new XYChart.Series();
series1.setName("Ventas");
22 i++;
https://www.facebook.com/groups/ebooksforjava/
By: John Michel Rivera de Len
bc.getData().addAll(series1);
} catch (Exception ex) {
Logger.getLogger(ReporteView.class.getName()).log(Level.SEVERE,
null, ex);
}
}
});
JAVA FX 2.x
root.getChildren().add(accordion);
root.getChildren().add(caption);
root.setMinSize(widthDouble, heightDouble);
root.setPrefSize(widthDouble, heightDouble);
return root;
}
Esta clase esta de ejemplo en la documentacin de Java Fx. Es mas sencillo que como se
realizaba anteriormente con Swing.
view.setPrefSize(widthDouble, heightDouble);
https://www.facebook.com/groups/ebooksforjava/
By: John Michel Rivera de Len
eng.load("http://www.google.com");
if (warningLabel.isVisible()) {
warningLabel.setVisible(false);
}
JAVA FX 2.x
};
eng.getLoadWorker().progressProperty().addListener(handler);
locationField.setMaxHeight(Double.MAX_VALUE);
goButton.setDefaultButton(false);
eng.load(locationField.getText().startsWith("http://") ? locationField.getText()
: "http://" + locationField.getText());
};
goButton.setOnAction(goAction);
locationField.setOnAction(goAction);
24
eng.locationProperty().addListener(new ChangeListener<String>() {
https://www.facebook.com/groups/ebooksforjava/
By: John Michel Rivera de Len
locationField.setText(newValue);
});
grid.setPadding(new Insets(5));
grid.setVgap(5);
grid.setHgap(5);
GridPane.setConstraints(goButton, 1, 0);
JAVA FX 2.x
GridPane.setConstraints(warningLabel, 0, 2, 2, 1, HPos.CENTER, VPos.CENTER,
Priority.ALWAYS, Priority.SOMETIMES);
grid.getColumnConstraints().addAll(
return grid;
Todas estas clases se llaman en el men principal y se insertan dentro de unos Tabs para
separar las distintas partes.
25
https://www.facebook.com/groups/ebooksforjava/
By: John Michel Rivera de Len
Para esto generamos un archivos XML que se utilizan por Apache FOP para generar el PDF,
El generar la factura en PDF se localiza en el paquete de ventas, clase Crear venta, botn
Generar Factura.
este tiene el botn siguiente:
btnf.layoutBoundsProperty();
btnf.setTranslateX(-90);
btnf.setTranslateY(145);
btnf.translateXProperty();
JAVA FX 2.x
btnf.translateYProperty();
btnf.relocate(50, 300);
btnf.setText("Generar Factura");
btnf.setOnAction(new EventHandler<ActionEvent>() {
@Override
try {
char m='"';
fo.setLength(0);
Este botn tiene el listener que crea los XML con los datos de la venta y escribe estos datos
en formato XML dentro de los archivos para generar el PDF. Al final se utilizan los mtodos de
la librera Apache FOP para convertir estos XML en un PDF, adems se incluye la imagen en
26 Codigo QR con el numero de folio de la factura.
https://www.facebook.com/groups/ebooksforjava/
By: John Michel Rivera de Len
//System.out.println("FOLIO FACT="+fact.getNextFolio());
fo.writeBytes("<xsl:stylesheet\n");
fo.writeBytes("xmlns:xsl="+m+"http://www.w3.org/1999/XSL/Transform"+m+"
version="+m+"1.0"+m+"\n");
fo.writeBytes("xmlns:fo="+m+"http://www.w3.org/1999/XSL/Format"+m+">\n");
fo.writeBytes("<fo:root xmlns:fo="+m+"http://www.w3.org/1999/XSL/Format"+m+">\n");
fo.writeBytes("<fo:layout-master-set>\n");
JAVA FX 2.x
fo.writeBytes("<fo:simple-page-master master-name="+m+"simple"+m+"\n");
fo.writeBytes("page-height="+m+"29.7cm"+m+"\n");
fo.writeBytes("page-width="+m+"21cm"+m+"\n");
fo.writeBytes("margin-top="+m+"1.5cm"+m+"\n");
fo.writeBytes("margin-bottom="+m+"1.5cm"+m+"\n");
fo.writeBytes("margin-left="+m+"2.5cm"+m+"\n");
fo.writeBytes("margin-right="+m+"2.5cm"+m+">\n");
fo.writeBytes("<fo:region-after extent="+m+"1.5cm"+m+"/>\n");
fo.writeBytes("</fo:simple-page-master>\n");
fo.writeBytes("</fo:layout-master-set>\n");
fo.writeBytes("<fo:page-sequence master-reference="+m+"simple"+m+">\n");
fo.writeBytes("<fo:static-content flow-name="+m+"xsl-region-before"+m+">\n");
fo.writeBytes("<fo:block\n"); 27
fo.writeBytes("font-size="+m+"15pt"+m+"\n");
fo.writeBytes("font-family="+m+"serif"+m+"\n");
https://www.facebook.com/groups/ebooksforjava/
By: John Michel Rivera de Len
fo.writeBytes("color="+m+"blue"+m+"\n");
fo.writeBytes("line-height="+m+"14pt"+m+" >\n");
fo.writeBytes(""+emp1.getText()+"\n");
fo.writeBytes("</fo:block>\n");
fo.writeBytes("<fo:block text-align="+m+"end"+m+"\n");
fo.writeBytes("font-size="+m+"15pt"+m+"\n");
fo.writeBytes("font-family="+m+"serif"+m+"\n");
fo.writeBytes("color="+m+"blue"+m+"\n");
fo.writeBytes("line-height="+m+"14pt"+m+" >\n");
fo.writeBytes("FACTURA\n");
fo.writeBytes("</fo:block>\n");
JAVA FX 2.x
fo.writeBytes("<fo:block text-align="+m+"end"+m+"\n");
fo.writeBytes("font-size="+m+"14pt"+m+"\n");
fo.writeBytes("font-family="+m+"serif"+m+"\n");
fo.writeBytes("color="+m+"red"+m+"\n");
fo.writeBytes("line-height="+m+"14pt"+m+" >\n");
fo.writeBytes(""+fact.getNextFolio()+"\n");
fo.writeBytes("</fo:block>\n");
fo.writeBytes("</fo:static-content>\n");
fo.writeBytes("<fo:flow flow-name="+m+"xsl-region-body"+m+">\n");
fo.writeBytes("<fo:block font-size="+m+"7pt"+m+"\n");
fo.writeBytes("font-family="+m+"sans-serif"+m+"\n");
fo.writeBytes("line-height="+m+"10pt"+m+"\n");
fo.writeBytes("space-after.optimum="+m+"3pt"+m+"\n");
fo.writeBytes("font-weight="+m+"bold"+m+"\n");
28 fo.writeBytes("start-indent="+m+"1pt"+m+">\n");
fo.writeBytes("RFC:"+rfce1.getText()+"\n");
fo.writeBytes("</fo:block>\n");
https://www.facebook.com/groups/ebooksforjava/
By: John Michel Rivera de Len
fo.writeBytes("<fo:block font-size="+m+"7pt"+m+"\n");
fo.writeBytes("font-family="+m+"sans-serif"+m+"\n");
fo.writeBytes("line-height="+m+"10pt"+m+"\n");
fo.writeBytes("space-after.optimum="+m+"3pt"+m+"\n");
fo.writeBytes("font-weight="+m+"bold"+m+"\n");
fo.writeBytes("start-indent="+m+"1pt"+m+" >\n");
fo.writeBytes(""+dire1.getText()+"\n");
fo.writeBytes("</fo:block>\n");
fo.writeBytes("<fo:block font-size="+m+"7pt"+m+"\n");
JAVA FX 2.x
fo.writeBytes("font-family="+m+"sans-serif"+m+"\n");
fo.writeBytes("line-height="+m+"10pt"+m+"\n");
fo.writeBytes("font-weight="+m+"bold"+m+" >\n");
fo.writeBytes("\n");
fo.writeBytes("</fo:block>\n");
fo.writeBytes("<fo:block font-size="+m+"7pt"+m+"\n");
fo.writeBytes("font-family="+m+"sans-serif"+m+"\n");
fo.writeBytes("line-height="+m+"10pt"+m+"\n");
fo.writeBytes("font-weight="+m+"bold"+m+">\n");
fo.writeBytes("-----------------------------------\n");
fo.writeBytes("</fo:block>\n");
fo.writeBytes("<fo:block font-size="+m+"7pt"+m+"\n");
fo.writeBytes("font-family="+m+"sans-serif"+m+"\n"); 29
fo.writeBytes("line-height="+m+"10pt"+m+"\n");
fo.writeBytes("color="+m+"grey"+m+"\n");
https://www.facebook.com/groups/ebooksforjava/
By: John Michel Rivera de Len
fo.writeBytes("font-weight="+m+"bold"+m+">\n");
fo.writeBytes("</fo:block>\n");
fo.writeBytes("<fo:block font-size="+m+"7pt"+m+"\n");
fo.writeBytes("font-family="+m+"sans-serif"+m+"\n");
fo.writeBytes("line-height="+m+"10pt"+m+"\n");
fo.writeBytes("font-weight="+m+"bold"+m+">\n");
fo.writeBytes("</fo:block>\n");
fo.writeBytes("<fo:block font-size="+m+"7pt"+m+"\n");
fo.writeBytes("font-family="+m+"sans-serif"+m+"\n");
fo.writeBytes("line-height="+m+"10pt"+m+"\n");
fo.writeBytes("font-weight="+m+"bold"+m+">\n");
fo.writeBytes(""+recabar[4]+"\n");
fo.writeBytes("</fo:block>\n");
fo.writeBytes("<fo:block font-size="+m+"7pt"+m+"\n");
fo.writeBytes("font-family="+m+"sans-serif"+m+"\n");
fo.writeBytes("line-height="+m+"10pt"+m+"\n");
fo.writeBytes("font-weight="+m+"bold"+m+">\n");
fo.writeBytes(""+"R.F.C "+recabar[7]+"\n");
30 fo.writeBytes("</fo:block>\n");
https://www.facebook.com/groups/ebooksforjava/
By: John Michel Rivera de Len
fo.writeBytes("<fo:table-column column-width="+m+"3cm"+m+"/>\n");
fo.writeBytes("<fo:table-column column-width="+m+"3cm"+m+"/>\n");
fo.writeBytes("<fo:table-column column-width="+m+"3cm"+m+"/>\n");
fo.writeBytes("<fo:table-column column-width="+m+"3cm"+m+"/>\n");
fo.writeBytes("<fo:table-body>\n");
fo.writeBytes("<fo:table-row>\n");
fo.writeBytes("<fo:block text-align="+m+"center"+m+">\n");
fo.writeBytes("Cantidad\n");
JAVA FX 2.x
fo.writeBytes("</fo:block>\n");
fo.writeBytes("</fo:table-cell>\n");
fo.writeBytes("<fo:block text-align="+m+"center"+m+">\n");
fo.writeBytes("Descripcion\n");
fo.writeBytes("</fo:block>\n");
fo.writeBytes("</fo:table-cell>\n");
fo.writeBytes("<fo:block text-align="+m+"center"+m+">\n");
fo.writeBytes("Precio Unitario\n");
fo.writeBytes("</fo:block>\n");
31
fo.writeBytes("</fo:table-cell>\n");
https://www.facebook.com/groups/ebooksforjava/
By: John Michel Rivera de Len
fo.writeBytes("<fo:block text-align="+m+"center"+m+">\n");
fo.writeBytes("Importe\n");
fo.writeBytes("</fo:block>\n");
fo.writeBytes("</fo:table-cell>\n");
fo.writeBytes("</fo:table-row>\n");
///fin headers
JAVA FX 2.x
float subt=0;
float IVA=0;
float tot=0;
fo.writeBytes("</fo:block></fo:table-cell>"+"\n");
System.out.println("1----"+inf.elementAt(i+5));
32 fo.writeBytes("</fo:block></fo:table-cell>"+"\n");
System.out.println("2----"+recabarp[1]); //desc
https://www.facebook.com/groups/ebooksforjava/
By: John Michel Rivera de Len
fo.writeBytes("</fo:block></fo:table-cell>"+"\n");
fo.writeBytes("</fo:block></fo:table-cell></fo:table-row>"+"\n");
System.out.println("4----"+inf.elementAt(i+6)); //imp
subt+=Double.parseDouble(""+inf.elementAt(i+7));
i+=9;
JAVA FX 2.x
} IVA+=subt*Float.parseFloat(iva1.getText()); tot= subt+IVA;
/*
while(txt2!=null){
fo.writeBytes(txt2+"\n");
txt2= mid.readLine();
mid.close();*/
////////////////////midle
fo.writeBytes("</fo:table-body>\n");
fo.writeBytes( "</fo:table>\n");
33
fo.writeBytes( " <fo:block font-size="+m+"7pt"+m+"\n");
fo.writeBytes( "font-family="+m+"sans-serif"+m+"\n");
https://www.facebook.com/groups/ebooksforjava/
By: John Michel Rivera de Len
fo.writeBytes( "font-weight="+m+"bold"+m+"\n");
fo.writeBytes( "</fo:block>"+"\n");
fo.writeBytes( "<fo:table-body>"+"\n");
//////////////////////
JAVA FX 2.x
fo.writeBytes("</fo:block></fo:table-cell>"+"\n");
fo.writeBytes(""+subt+"\n");
fo.writeBytes("</fo:block></fo:table-cell></fo:table-row>"+"\n");
System.out.println(""+subt);
fo.writeBytes( "IVA"+"\n");
34
fo.writeBytes("</fo:block></fo:table-cell>"+"\n");
https://www.facebook.com/groups/ebooksforjava/
By: John Michel Rivera de Len
fo.writeBytes(""+IVA+"\n");
fo.writeBytes("</fo:block></fo:table-cell></fo:table-row>"+"\n");
System.out.println(""+IVA);
fo.writeBytes( "TOTAL"+"\n");
fo.writeBytes("</fo:block></fo:table-cell>"+"\n");
JAVA FX 2.x
+m+" border-style=" + m +"solid"+m+"> <fo:block text-align="+m+"center"+m+">"+"\n");
fo.writeBytes(""+tot+"\n");
fo.writeBytes("</fo:block></fo:table-cell></fo:table-row>"+"\n");
System.out.println(""+tot);
/*
35
String txt3= fin.readLine();
while(txt3!=null){
https://www.facebook.com/groups/ebooksforjava/
By: John Michel Rivera de Len
fo.writeBytes(txt3+"\n");
txt3= fin.readLine();
fin.close();
*/
fo.writeBytes("</fo:table-body>\n");
fo.writeBytes("</fo:table>\n");
fo.writeBytes("<xsl:apply-templates/>\n");
fo.writeBytes("<fo:block font-size="+m+"10pt"+m+"\n");
JAVA FX 2.x
fo.writeBytes("font-family="+m+"sans-serif"+m+"\n");
fo.writeBytes("line-height="+m+"11pt"+m+"\n");
fo.writeBytes("space-before.optimum="+m+"2cm"+m+">\n");
fo.writeBytes("</fo:block>\n");
fo.writeBytes("</fo:flow>\n");
fo.writeBytes("</fo:page-sequence>\n");
fo.writeBytes("</fo:root>\n");
fo.writeBytes("</xsl:template>\n");
fo.writeBytes("<fo:block font-size="+m+"14pt"+m+"\n");
fo.writeBytes("font-family="+m+"sans-serif"+m+"\n");
36 fo.writeBytes("space-before.optimum="+m+"3pt"+m+"\n");
fo.writeBytes("space-after.optimum="+m+"3pt"+m+"\n");
fo.writeBytes("text-align="+m+"center"+m+"\n");
https://www.facebook.com/groups/ebooksforjava/
By: John Michel Rivera de Len
fo.writeBytes("padding-top="+m+"3pt"+m+">\n");
fo.writeBytes("<xsl:apply-templates/>\n");
fo.writeBytes("</fo:block>\n");
fo.writeBytes("</xsl:template>\n");
fo.writeBytes("<fo:block font-size="+m+"16pt"+m+"\n");
fo.writeBytes("line-height="+m+"18pt"+m+"\n");
fo.writeBytes("padding-top="+m+"3pt"+m+"\n");
fo.writeBytes("space-before.optimum="+m+"3pt"+m+"\n");
fo.writeBytes("space-after.optimum="+m+"3pt"+m+"\n");
JAVA FX 2.x
fo.writeBytes("text-align="+m+"center"+m+"\n");
fo.writeBytes("start-indent="+m+"2cm"+m+"\n");
fo.writeBytes("end-indent="+m+"2cm"+m+"\n");
fo.writeBytes("background-color="+m+"red"+m+"\n");
fo.writeBytes("color="+m+"white"+m+">\n");
fo.writeBytes("<xsl:value-of select="+m+"."+m+"/>\n");
fo.writeBytes("</fo:block>\n");
fo.writeBytes("</xsl:template>\n");
fo.writeBytes("<fo:block font-size="+m+"13pt"+m+"\n");
fo.writeBytes("line-height="+m+"14pt"+m+"\n");
fo.writeBytes("text-align="+m+"start"+m+">\n");
fo.writeBytes("<xsl:value-of select="+m+"."+m+"/>\n");
fo.writeBytes("</fo:block>\n"); 37
fo.writeBytes("</xsl:template>\n");
https://www.facebook.com/groups/ebooksforjava/
By: John Michel Rivera de Len
fo.writeBytes("<fo:block font-size="+m+"11pt"+m+"\n");
fo.writeBytes("line-height="+m+"12pt"+m+"\n");
fo.writeBytes("font-family="+m+"sans-serif"+m+"\n");
fo.writeBytes("text-align="+m+"start"+m+"\n");
fo.writeBytes("start-indent="+m+"0.5cm"+m+">\n");
fo.writeBytes("<xsl:apply-templates/>\n");
fo.writeBytes("</fo:block>\n");
fo.writeBytes("</xsl:template>\n");
fo.writeBytes("<fo:block font-size="+m+"10pt"+m+"\n");
fo.writeBytes("line-height="+m+"11pt"+m+"\n");
fo.writeBytes("font-family="+m+"Courier"+m+"\n");
fo.writeBytes("text-align="+m+"start"+m+"\n");
fo.writeBytes("start-indent="+m+"0.5cm"+m+"\n");
fo.writeBytes("wrap-option="+m+"wrap"+m+">\n");
fo.writeBytes("</fo:block>\n");
fo.writeBytes("</xsl:template>\n");
//creo la img QR
int udm = 0;
https://www.facebook.com/groups/ebooksforjava/
By: John Michel Rivera de Len
int rotacion = 0;
codigoQR.setData("Folio: "+fact.getNextFolio());
codigoQR.setDataMode(QRCode.MODE_BYTE);
codigoQR.setUOM(udm);
codigoQR.setLeftMargin(margenIzq);
JAVA FX 2.x
codigoQR.setResolution(resolucion);
codigoQR.setRightMargin(margenDer);
codigoQR.setTopMargin(margenSup);
codigoQR.setBottomMargin(margenInf);
codigoQR.setRotate(rotacion);
codigoQR.setModuleSize(tamanoModulo);
codigoQR.renderBarcode(archivo);
fo.writeBytes("<fo:block font-size="+m+"10pt"+m+"\n");
fo.writeBytes("line-height="+m+"11pt"+m+"\n");
fo.writeBytes("font-family="+m+"Courier"+m+"\n"); 39
fo.writeBytes("text-align="+m+"start"+m+"\n");
fo.writeBytes("start-indent="+m+"0.5cm"+m+">\n");
https://www.facebook.com/groups/ebooksforjava/
By: John Michel Rivera de Len
fo.writeBytes("Codigo QR:\n");
fo.writeBytes("<fo:external-graphic src="+m+"url('./nulllion.jpg')"+m+"/>");
fo.writeBytes("</fo:block>\n");
fo.writeBytes("<fo:block space-after.optimum="+m+"3pt"+m+">\n");
fo.writeBytes("<xsl:apply-templates/>\n");
fo.writeBytes("</fo:block>\n");
fo.writeBytes("</xsl:template>\n");
fo.writeBytes("<fo:block font-size="+m+"9pt"+m+"\n");
JAVA FX 2.x
fo.writeBytes("line-height="+m+"10pt"+m+"\n");
fo.writeBytes("text-align="+m+"start"+m+"\n");
fo.writeBytes("start-indent="+m+"1cm"+m+">\n");
fo.writeBytes("<xsl:value-of select="+m+"."+m+"/>\n");
fo.writeBytes("</fo:block>\n");
fo.writeBytes("</xsl:template>\n");
fo.writeBytes("<fo:block font-size="+m+"13pt"+m+"\n");
fo.writeBytes("line-height="+m+"14pt"+m+"\n");
fo.writeBytes("text-align="+m+"start"+m+">\n");
fo.writeBytes("<xsl:value-of select="+m+"."+m+"/>\n");
fo.writeBytes("</fo:block>\n");
40 fo.writeBytes("</xsl:template>\n");
https://www.facebook.com/groups/ebooksforjava/
By: John Michel Rivera de Len
fo.writeBytes("<fo:block font-size="+m+"11pt"+m+"\n");
fo.writeBytes("text-align="+m+"start"+m+"\n");
fo.writeBytes("line-height="+m+"12pt"+m+">Values: <xsl:value-of
select="+m+"."+m+"/>\n");
fo.writeBytes("</fo:block>\n");
fo.writeBytes("</xsl:template>\n");
fo.writeBytes("</xsl:stylesheet>\n");
/////////////
JAVA FX 2.x
//se crea el xml
foxml.setLength(0);
foxml.writeBytes("<root>\n");
foxml.writeBytes("<div id="+m+"fo:basic-link"+m+">\n");
foxml.writeBytes("<fo> Factura</fo>\n");
foxml.writeBytes("<explanation>TESOEM</explanation>\n");
foxml.writeBytes("<properties>\n");
foxml.writeBytes("<property>...</property>\n");
foxml.writeBytes("</properties>\n");
41
foxml.writeBytes("</div>\n");
foxml.writeBytes("</div0></root>\n");
https://www.facebook.com/groups/ebooksforjava/
By: John Michel Rivera de Len
foxml.close();
///
System.out.println("Preparando...");
// Setup directories
outDir.mkdirs();
JAVA FX 2.x
System.out.println();
System.out.println("Transformando...");
https://www.facebook.com/groups/ebooksforjava/
By: John Michel Rivera de Len
// Setup output
try {
// Setup XSLT
JAVA FX 2.x
// Set the value of a <param> in the stylesheet
transformer.setParameter("versionParam", "2.0");
// Resulting SAX events (the generated FO) must be piped through to FOP
transformer.transform(src, res);
} finally {
out.close(); 43
}
https://www.facebook.com/groups/ebooksforjava/
By: John Michel Rivera de Len
System.out.println("Finalizado!");
try{
JOptionPane.showMessageDialog(null, e);
}catch(Exception e){}}
});
JAVA FX 2.x
Estos mtodos ya los explique en otros manuales, donde se utiliza por medio de CMD la
invocacin de Adobe Reader para mostrar el PDF.
Se adjunta toda la documentacion de Java Fx 2.x para conocer todos los metodos con
ejemplos implementados.
Esta aplicacin la desarrolle con algunos amigos, como proyecto, as que el credito
tambien es de ellos
Aguilar Arteaga Fabio
Dias Tenorio Josue Arturo
Quiterio Vazques marcos
Flores Pimentel Ana Karina
Jimenez Carmona Luis Angel
44
https://www.facebook.com/groups/ebooksforjava/
By: John Michel Rivera de Len
APENDICE
A
B
C
D
JAVA FX 2.x
F
G
H
I
J
JSP: Java Server Pages, tecnologa que permite crear pginas web
dinmicas.
JDBC: Java Data Base Connectivity, permite establecer una conectividad
entre el lenguaje de programacin JAVA y una base de datos.
K
L
M
Controlador
https://www.facebook.com/groups/ebooksforjava/
By: John Michel Rivera de Len
Modelo
Vistas
N
O
P
Q
R
S
Session Factory: Es una representacin de Hibrnate, este se encarga de
administrar las sesiones para ingresar a las bases de datos.
Servlet: El Servlet es un elemento de control, este procesa las peticiones
del usuario y devuelve una respuesta. El Servlet es un elemento que se
encuentra del lado del servidor y ah mismo se ejecuta, puede trabajar en
conjunto con JSP.
T
U
UP: Unified Process, Esta metodologa mejor conocida como RUP, ya que
su creador fue Rational Software. Esta metodologa permite capturar la
informacin del proceso de desarrollo del software.
V
W
X
46 Y
Z
https://www.facebook.com/groups/ebooksforjava/