elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  [Source] [JavaFX] [MySQL] - FXAgenda
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: [Source] [JavaFX] [MySQL] - FXAgenda  (Leído 16,970 veces)
Mitsu

Desconectado Desconectado

Mensajes: 259



Ver Perfil WWW
[Source] [JavaFX] [MySQL] - FXAgenda
« en: 28 Octubre 2013, 03:19 am »

Buenas noches con todos.

Estoy practicando con JavaFX, la verdad me parece un excelente framework para RAD (desarrollo rapido de aplicaciones). Es un framework muy completo y por supuesto, multiplataforma.

JavaFX es la nueva apuesta de Oracle (Aunque el proyecto fue inicialmente de Sun), para el desarrollo de GUI, y la verdad fue un buen movimiento. JavaFX ha venido para reemplazar a Swing a mediano - largo plazo como lo dice Oracle, y creo que no tardará mucho. Gran cantidad de programadores están migrando a JavaFX, por su flexibilidad e increible potencia. JavaFX puede ser usado en Desktop, web y Móvil.


FX AGENDA:


FXAgenda es una agenda virtual. Puede guardar los contactos que se desee. Los contactos serán guardados en una base de datos.

Características:


  • Cuando se lance la aplicación la primera vez, pedirá configurar el root y pass de su base de datos.
  • Cuando se lance la aplicación por primera vez, creará una carpeta en: Home/AppData/Local/, llamada 'agenda'.
  • En la carpeta agenda se guardarán las configuraciones de  la cuenta de usuario y de la base de datos: userdata.txt y database.txt
  • Si se elimina el archivo userdata.txt lo creará automáticamente al iniciar la aplicación con el usario y contraseña por defecto.
  • Si se elimina el archivo database.txt al iniciar la aplicación pedirá el root y pass de su base de datos, tal y como la primera vez que se inicia la aplicación.
  • Se puede añadir contactos, modificar y eliminar.
  • Para añadir un contacto se tiene que ir al menú 'Archivo' y elegir la opción 'Nuevo'.
  • El boton Guardar se deshabilitará mientras no se ingresen todos los datos.
  • Para modificar un contacto se da doble clic en la celda a modificar, y se establece el nuevo valor. Se modificará autom. la misma celda en la Base de datos.
  • Para eliminar un contacto, se puede dar clic derecho en la fila de la tabla y elegir la opción 'eliminar', o se puede ir al menú Editar -> eliminar.
  • Si se quiere ver solo la tabla, presionar Cancelar.
  • Para salir, simplemente hay que ir al menú Archivo -> Salir.
Imágenes:

Login:



Agregar nuevo contacto:



Menu Editar:



Establecer nuevo usuario y contraseña:



Establecer nueva config. de la base de datos:



Eliminar contacto:



Modificar contacto:



Acerca del autor:



Base de datos (MySql):

Código:
CREATE DATABASE contactos;


CREATE TABLE contacto(
ID mediumint(100) not null auto_increment,
Nombre varchar(50) not null, Apellido varchar(50) not null,
FNacimiento varchar(14) not null, Telefono varchar(20) not null,
Email varchar(50) not null, Direccion varchar(80) not null,
primarykey(ID));


NOTA: El usuario y contraseña por defecto son: user - pass. Puede cambiarse en el menú Editar.


Links actualizados:

Ejecutable:     FXAgenda

Código fuente: Source



Espero les sirva de algo. Saludos...


« Última modificación: 10 Noviembre 2013, 15:57 pm por M1t$u » En línea

makinavaja3500

Desconectado Desconectado

Mensajes: 66


Ver Perfil
Re: [Source][JavaFX][MySql] FXAgenda
« Respuesta #1 en: 10 Noviembre 2013, 02:56 am »

Felicidades, tiene muy buena pinta.

Tienes documentación de JavaFx en español? Estoy buscando para empezar con JavaFx pero no encuentro nada.

Saludos


En línea

egyware


Desconectado Desconectado

Mensajes: 526



Ver Perfil WWW
Re: [Source][JavaFX][MySql] FXAgenda
« Respuesta #2 en: 10 Noviembre 2013, 03:48 am »

El Look and Feel es hermoso. Talvez tenga que considerarlo en un próximo proyecto que use GUI en Java.
En línea

Mitsu

Desconectado Desconectado

Mensajes: 259



Ver Perfil WWW
Re: [Source][JavaFX][MySql] FXAgenda
« Respuesta #3 en: 10 Noviembre 2013, 15:42 pm »

Muchas gracias a ambos por comentar.

@makinavaja3500 En realidad, Aprendi JavaFX en diversas fuentes como:

1) Oracle docs
2) Blogs de JavaFX: www.java-buddy.blogspot.com, www.edu.makery.ch, y otros.
3) StackOverFlow. Este foro me ha ayudado muchísimo cuando no sabía cómo ni para qué hacer algo.

Material en español no vas a encontrar mucho, casi no hay. Si quieres, agrégame al skype (Manda MP) y te pasaré material (Inglés).

@egyware Gracias machine. FX tiene un L&F muy bueno, me gusta mucho. Pero lo que es mejor, es que puedes aplicar estilos (css) a tus GUI's, haciendo que luzcan como tú desees. En este caso escogí un tono Negro y un blanco ahumado.

Está de más decir que Swing, en unos años morirá. FX ha venido a reemplazarlo, por lo que se podría decir que FX será el UI Toolkit predeterminado de Java en unos años. Fuera de esto, te recomiendo usar FX, da muchísima más libertad al programador al momento de hacer las GUI.


Saludos.
En línea

egyware


Desconectado Desconectado

Mensajes: 526



Ver Perfil WWW
Re: [Source][JavaFX][MySql] FXAgenda
« Respuesta #4 en: 11 Noviembre 2013, 03:42 am »


@egyware Gracias machine. FX tiene un L&F muy bueno, me gusta mucho. Pero lo que es mejor, es que puedes aplicar estilos (css) a tus GUI's, haciendo que luzcan como tú desees. En este caso escogí un tono Negro y un blanco ahumado.

Está de más decir que Swing, en unos años morirá. FX ha venido a reemplazarlo, por lo que se podría decir que FX será el UI Toolkit predeterminado de Java en unos años. Fuera de esto, te recomiendo usar FX, da muchísima más libertad al programador al momento de hacer las GUI.

Fascinante, no sabia que utilizaba CSS. Lo cual me simplificará la vida a la hora de crear los elementos.

Empezaré mi estudio de JavaFX y empezaré por aqui http://docs.oracle.com/javafx/index.html lo escribo por si alguien se topa con este post y también quiere aprender JavaFX.

Saludos!
« Última modificación: 11 Noviembre 2013, 14:58 pm por egyware » En línea

Mitsu

Desconectado Desconectado

Mensajes: 259



Ver Perfil WWW
Re: [Source] [JavaFX] [MySQL] - FXAgenda
« Respuesta #5 en: 11 Noviembre 2013, 04:22 am »

Que te vaya bien en tu aprendizaje máquina. Suerte!

Saludos.
En línea

pwnz

Desconectado Desconectado

Mensajes: 14



Ver Perfil
Re: [Source] [JavaFX] [MySQL] - FXAgenda
« Respuesta #6 en: 16 Noviembre 2013, 03:08 am »

Había oído hablar de javafx pero después de ver la pedazo de GUI sin duda voy a ir mirándolo pero ya! cambia mucho respecto a swing la forma de programar una GUI?
En línea

Mitsu

Desconectado Desconectado

Mensajes: 259



Ver Perfil WWW
Re: [Source] [JavaFX] [MySQL] - FXAgenda
« Respuesta #7 en: 16 Noviembre 2013, 16:07 pm »

Hola, gracias por comentar.

Respecto a si cambia mucho con respecto a Swing es sí. La arquitectura es diferente, es más organizada, más flexible. Por ejemplo, con FX los EventHandler son muy flexibles, le puedes dar un determinado tipo de listener a tus controles que con Swing no sería posible. Puedes usar CSS para darle el estilo deseado a tus controles.

Otro punto es que, la forma en como se trabaja no es muy diferente a Swing. En Swing se hereda de JFrame para hacer una ventana, y con FX se hereda de Application. La lógica en realidad, no es muy diferente. La transición de Swing a FX no es muy dura.

Puedes crear una GUI con FX de 2 formas:

1) Manualmente (Por código Java)
2) Por medio de Scene Builder.

La ventana de hacerlo por Scene Builder es que tu puedes diseñar tu GUI simplemente arrastrando controles (como Visual Studio), pero la ventaja es que no te genera código Java, si no código FXML.

FXML es un lenguaje de etiquetado con el que podemos crear nuestras GUI's, no se mezcla en nada con código Java. De esta manera, se separa una clase Controladora y la vista (FXML).

Cuando creamos una GUI con SceneBuilder tenemos que especificar cuál es la clase Controladora que manejará la GUI.

Primero, tienes que crear un proyecto JavaFX FXML Aplication o si quieres usar un paquete dentro de un proyecto ya existente, simplemente dale clic derecho -> Other -> JavaFX - Empty FXML.

Te creará un archivo FXML. Ábrelo así:


Luego ya puedes empezar a crear la GUI. En el apartado izquierdo, tendrás los Paneles y Controles. Para colocarlo en tu GUI simplemente arrástralos. En el apartado derecho verás una columna con 3 secciones:

  • Properties: Aquí puedes editar las propiedades del control, como color de texto, tamaño y tipo de fuente, etc y además puedes agregar un archivo CSS.
  • Layout: Aquí puedes modificar el tamaño, y cualquier cosa que tenga que ver con el layout.
  • Code: Aquí especificas el identificador que tendrá el control en tu clase Controladora, y los distintos tipos de eventos que le quieras aplicar.

Aquí le digo al control qué metodo será el que desencadene los eventos:


Cuando termines de crear la GUI, tienes que especificar la clase Controladora en propiedades de AnchorPane:





Ejemplo Completo:


ControladoraVista:
Código
  1. import java.net.URL;
  2. import java.util.ResourceBundle;
  3. import javafx.fxml.FXML;
  4. import javafx.fxml.Initializable;
  5. import javafx.scene.control.Button;
  6. import javafx.scene.control.Label;
  7. import javafx.scene.control.TextField;
  8.  
  9. /**
  10.  *
  11.  * @author mitsu
  12.  */
  13. public class ControladoraVista implements Initializable {
  14.  
  15.    @FXML TextField txtMsg;
  16.    @FXML Button btnShow;
  17.    @FXML Label lblShowMsg;
  18.  
  19.  
  20.    @FXML public void btnShowAction() {
  21.        lblShowMsg.setText(txtMsg.getText());
  22.    }
  23.  
  24.  
  25.    @Override
  26.    public void initialize(URL url, ResourceBundle rb) {
  27.  
  28.    }
  29.  
  30.  
  31. }
  32.  

Como puedes ver, hay algunas anotaciones de tipo @FXML. Bien, esto lo que hace, es asociar un control o evento con el archivo FXML. por lo que, de esta manera, podemos utilizar los controles que hemos diseñado previamente en la GUI  con Scene Builder.

Un punto importante es éste método:
Código
  1. @FXML public void btnShowAction() {
  2.        lblShowMsg.setText(txtMsg.getText());
  3.    }
  4.  

Lo que hace la antonación aquí es: Asociar el evento del botón con este método. Ya no es necesario utilizar EventHandler, si no, directamente se escribe un método simple, con lo que queremos que haga ese botón.

El método se utiliza por si quieres inicializar algo, como una tabla por ejemplo, una lista, etc:
Código
  1. @Override
  2.    public void initialize(URL url, ResourceBundle rb) {
  3.  
  4.    }
  5.  


Vista.fxml
Código
  1. <?xml version="1.0" encoding="UTF-8"?>
  2.  
  3. <?import java.lang.*?>
  4. <?import java.util.*?>
  5. <?import javafx.scene.*?>
  6. <?import javafx.scene.control.*?>
  7. <?import javafx.scene.layout.*?>
  8. <?import javafx.scene.text.*?>
  9.  
  10. <AnchorPane id="AnchorPane" prefHeight="283.0" prefWidth="338.0" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/2.2" fx:controller="javase.javafx.demo.ControladoraVista">
  11.  <children>
  12.    <Pane layoutX="0.0" layoutY="0.0" prefHeight="283.0" prefWidth="338.0">
  13.      <children>
  14.        <Label layoutX="29.0" layoutY="50.0" text="Mensaje:" />
  15.        <TextField fx:id="txtMsg" layoutX="115.0" layoutY="47.0" prefWidth="178.0" />
  16.        <Button fx:id="btnShow" layoutX="138.0" layoutY="97.0" mnemonicParsing="false" onAction="#btnShowAction" text="Mostrar" />
  17.        <Label fx:id="lblShowMsg" layoutX="29.0" layoutY="163.0" prefHeight="42.1328125" prefWidth="277.0" text="" textFill="#00a3ff">
  18.          <font>
  19.            <Font size="16.0" />
  20.          </font>
  21.        </Label>
  22.      </children>
  23.    </Pane>
  24.  </children>
  25. </AnchorPane>
  26.  

Ésta parte es la que asocia la clase Controladora con la GUI:

Código
  1. fx:controller="javase.javafx.demo.ControladoraVista">
  2.  

Aquí es donde especificamos el evento para el botón:

Código
  1. <Button fx:id="btnShow" layoutX="138.0" layoutY="97.0" mnemonicParsing="false" onAction="#btnShowAction" text="Mostrar" />
  2.  



Clase principal:
Código
  1. package javase.javafx.demo;
  2.  
  3. import java.io.IOException;
  4. import javafx.application.Application;
  5. import javafx.fxml.FXMLLoader;
  6. import javafx.scene.Parent;
  7. import javafx.scene.Scene;
  8. import javafx.stage.Stage;
  9.  
  10. /**
  11.  *
  12.  * @author mitsu
  13.  */
  14. public class Principal extends Application {
  15.  
  16.    public static void main (String[] args) {
  17.        launch(args); // metodo encargado de lanzar la aplicacion
  18.    }
  19.    @Override
  20.    public void start(Stage stage) {
  21.        stage.setTitle("JavaFX Demo");
  22.        Parent root = null;
  23.        // carga el archivo FXML e inicializa la stage, scene y hace visible la stage
  24.                try {
  25. root = FXMLLoader.load(getClass().getResource("/javase/javafx/demo/Vista.fxml"));
  26.                        Scene scene = new Scene(root); // agrega el panel Group a la escena
  27.                        stage.setScene(scene); // establece esta escena para la stage
  28.                        stage.setResizable(false);
  29.                        stage.show(); // equivalente a 'setVisible(true)
  30. } catch (IOException e) {
  31. System.err.println(e);
  32.                        System.exit(0);
  33.                }
  34.  
  35.    }
  36.  
  37. }
  38.  



Notas:

  • El método start() es el que se encarga de crear la GUI. Es por ésto que aquí es donde cargamos el archivo .fxml.
  • En el método main, tenemos el método launch() que es el encargado de levantar la aplicación.



Resultado:


« Última modificación: 16 Noviembre 2013, 16:13 pm por M1t$u » En línea

mierdal

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Re: [Source] [JavaFX] [MySQL] - FXAgenda
« Respuesta #8 en: 18 Abril 2014, 00:50 am »



La ventaja de hacerlo por Scene Builder es que tu puedes diseñar tu GUI simplemente arrastrando controles (como Visual Studio), pero la ventaja es que no te genera código Java, si no código FXML.

FXML es un lenguaje de etiquetado con el que podemos crear nuestras GUI's, no se mezcla en nada con código Java. De esta manera, se separa una clase Controladora y la vista (FXML).

Cuando creamos una GUI con SceneBuilder tenemos que especificar cuál es la clase Controladora que manejará la GUI.

Primero, tienes que crear un proyecto JavaFX FXML Aplication o si quieres usar un paquete dentro de un proyecto ya existente, simplemente dale clic derecho -> Other -> JavaFX - Empty FXML.


Esto no es del todo cierto ya que para controlar directamente los controladores que te ha creado el FXML es muy cansado ya que si tienes que pasar informacion entre formas o incluso redefinir acciones en tiempo de ejecucion es muy dificil ya que todas las propiedades se encuentran en el FXML, ademas haciendolo del modo "Manual" estaras obligado a tener una variable a la cual seguirle la pista para cada componente, cosa que en FXML puedes tener un boton sin tener la variable correspondiente en el controlador, mas bien la tienes en en el FXML y para hacer uso de ella tienes que agregar la etiqueta @FXML para indicar el contexto y tiene que ser una variable global, dejando los componentes simples que solo se usan una vez sin variable o con una variable Global lo que supone perdida de memoria.....

Un Ejemplo sencillo

Modo: manual
public void crearVentana(){
  Label etiqueta=new Label("Enviar Formulario");
  -------------------------------
  Código
  -------------------------------
  Button enviar=new Button();
  enviar.setOnAction(); << esta asignacion termina muriendo con la funcion


}

Modo: FXML

@FXML
private Button enviar;

public void crearVentana(){
  Label etiqueta=new Label("Enviar Formulario");
  -------------------------------
  Código
  -------------------------------
  enviar=new Button();
  enviar.setOnAction(); << la asignacion NO termina muriendo con la funcion ni la variable


}


pero bueno digamos que hacerlo con FXML hace que para las personas que inician separen un poco mejor el MVC y tambien para hacer aplicaciones poco complejas
En línea

kernelgis

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Re: [Source][JavaFX][MySql] FXAgenda
« Respuesta #9 en: 10 Junio 2014, 20:45 pm »

Hola Mitsu!, esta muy interesante todo esto!.
Estoy realizando una aplicación con javaFx con el SceneBuilder para construir los FXML.
Mi Pregunta es "Cómo puedo mostrar la aplicación que estoy realizando para que se ejecute en un WebSite con un servidor de aplicaciones?.
Tendrás algún link o documentación ?

De antemano te agradezco la atención.

Saludos.
Kernelgis.

Muchas gracias a ambos por comentar.

@makinavaja3500 En realidad, Aprendi JavaFX en diversas fuentes como:

1) Oracle docs
2) Blogs de JavaFX: www.java-buddy.blogspot.com, www.edu.makery.ch, y otros.
3) StackOverFlow. Este foro me ha ayudado muchísimo cuando no sabía cómo ni para qué hacer algo.

Material en español no vas a encontrar mucho, casi no hay. Si quieres, agrégame al skype (Manda MP) y te pasaré material (Inglés).

@egyware Gracias machine. FX tiene un L&F muy bueno, me gusta mucho. Pero lo que es mejor, es que puedes aplicar estilos (css) a tus GUI's, haciendo que luzcan como tú desees. En este caso escogí un tono Negro y un blanco ahumado.

Está de más decir que Swing, en unos años morirá. FX ha venido a reemplazarlo, por lo que se podría decir que FX será el UI Toolkit predeterminado de Java en unos años. Fuera de esto, te recomiendo usar FX, da muchísima más libertad al programador al momento de hacer las GUI.


Saludos.
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Usar JavaFX con JMF
Java
armix 0 3,510 Último mensaje 21 Septiembre 2009, 10:17 am
por armix
JavaFX
Java
mapers 0 2,137 Último mensaje 31 Mayo 2012, 07:45 am
por mapers
JavaFX Composer
Java
mapers 0 1,888 Último mensaje 31 Mayo 2012, 20:46 pm
por mapers
[JavaFX] Manual para aprender JavaFX
Java
jaxoR 1 10,527 Último mensaje 17 Noviembre 2013, 20:16 pm
por Mitsu
[JavaEE - JavaFx] RESTful con JPA (CRUD) y cliente en JavaFX
Java
Usuario Invitado 2 4,186 Último mensaje 10 Abril 2015, 22:43 pm
por Usuario Invitado
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines