Popular Post

{JavaFX} Ventana con sombra en los bordes -shadow border-

By : Juan Jose Grajeda Cuesi
Que tal :D creo que a más de alguno nos a pasado que queremos que nuestro ventana se mire de lo mejor y si no es así no avanzamos :D. Bueno espero que esto te sea de utilidad.

Lo que haremos será colocar sombra a la sombra de nuestra ventana como ejemplo te dejo lo que se piensa realizar:
Para hacer esto vamos a necesitar de tres cosas:
  1. Un FXML
  2. Una hoja de estilo -CSS-
  3. Clase utilizando JavaFx
Manos a la obra :D.

CSS

Siguiente es el archivo css, este CSS varía un poco ya que JavaFX utiliza su propia sintaxis aunque practicamente lo que hace en todo es agregar al principio un -fx- ¬ ¬ pero bueno cosa de ellos :D.

Lo que comentaré con mas detalle es el -fx-effect ya que se usa una función llamada dropshadow y esta es la que da el efecto de sombra.

dropshadow( <blur-type> , <color> , <number> , <number> , <number> , <number> )

<blur-type> = [ gaussian | one-pass-box | three-pass-box | two-pass-box ]
<color> El color de la sombra
<number> El radio del núcleo de difuminado de la sombra. En un rango de [0.0 ... 127.0], por lo regular es 10.
<number> La propagación de la sombra. Los valores deben ir en un rango [0.0 ... 1.0].
<number> El desplazamiento de la sombra en la dirección x, en píxeles.
<number> El desplazamiento de la sombra en la dirección y, en píxeles.

También debemos crear un -fx-padding para lugar entre el borde y la sombra. Además de un -fx-backgroup-radius para dar un borde redondeado.

Dentro del css hay dos clases una llamada root que va ligada al AnchorPane y otra llamada content que va ligada a HBox.

-El código lo colocaré más abajo-

FXML

Primero comencemos con el FXML esta parte es sencilla ya que si tienes el JavaFX Scene Builder esto es más sencillo ya que lo único que haremos es coloar un HBox. Para el que no tiene este se crear un AnchorPane y luego del AnchorPane colocamos el HBox. Acá te dejo un archivo de muestra del FXML. El ancho es de 300 y el alto de 48.

-El código lo colocaré más abajo-

JAVA 

Acá sólo debemos ver un par de cosas y es sobre el tipo de borde que utilizará el Stage y el tipo de color que utilizará el Scene ambos deben ser de tipo TRANSPARENT

Stage 

stage.initStyle( StageStyle.TRANSPARENT );

Scene

scene.setFill( Color.TRANSPARENT );

Bueno después de la gran terapia :D dejo el código. El código viene como sigue: primero el FXML, luego el código de Java y el último es la hoja de estilo.

Si gustas otro ejemplo en stack overflow hay uno interesante http://stackoverflow.com/questions/17571593/drop-shadow-in-an-undecorated-pane-javafx
Y si gustas descargar el ejemplo
Descargar


Espero que te haya ayudado. Dios te bendiga.
Tag : , ,

{JavaFX} Stage sin bordes/marco

By : Juan Jose Grajeda Cuesi
Cuando nos agarra el patin :D a veces queremos que nuestra ventana no tenga bordes ya sea porque queremos algo parecido a un splash u otras ideas.

Realmente es sencillo no colocarle bordes a una ventana de JavaFX (Stage) pero hay que tomar en cuenta algo y es que se se puede hacer utilizando un TRANSPARENT o UNDECORATED pero con la opción de TRANSPARENTE da un poco de problema en GNU/Linux para esto recomiendo que usen UNDECORATED ya que talvez a algúno cuando bajo los ejemplos de JavaFX le dio algún problema la ventana en forma de circulo y es porque la tiene como TRANSPARENT.

Bueno para ir al grano :D se debe de realizar lo siguiente:
primary.initStyle( StageStyle.UNDECORATED );


Y para concluir coloco un ejemplo que muestra una ventan sin bordes y con un botón cerrar:
El resultado es el siguiente:
Al presionar el botón cerrar adivinen que pasa XD ¡¡pues te equivocaste!! abre otra ventana XD, bueno si lo que habias pensado se cierra la aplicación :D.

Espero que haya sido de utilidad. Dios te bendiga.

Tag : , ,

[ISQL]ERROR: Could not SQLConnect

By : Juan Jose Grajeda Cuesi
Realizando un procedimiento para almacenar CDR de Asterisk en MySQL con ODBC me tope con un pequeño problema pero nada grave aunque puede ser molesto :D.

Este problema [ISQL]ERROR: Could not SQLConnect que realmente no nos dice nada ya que es muy ambiguo. En mi caso este error se dio porque no encontro estos arhivos:
  • libmyodbc.so
  • libodbcmyS.so
Y esto se dio a que siguiendo un tutorial me indicaba una ruta -/usr/lib/odbc- diferente a la que yo tenia -/usr/lib/i386-linux-gnu/odbc. Bueno para arreglarlo es sencillo colocá en consola

$ find /usr/lib/ -name libmyodbc.so -type f

Con esto lo que hacemo es buscar la ruta donde se encuntra el archivo. El resultado que mostro fue:
/usr/lib/i386-linux-gnu/odbc/libmyodbc.so

La configuración final de mi archivo odbcinst.ini quedo
[MySQL] 
Description = ODBC for MySQL 
Driver = /usr/lib/i386-linux-gnu/odbc/libmyodbc.so 
Setup = /usr/lib/i386-linux-gnu/odbc/libodbcmyS.so 
FileUsage = 1

Espero que te sea de utilidad. Dios te bendiga.

{Java} Global Hotkeys - Teclas de acceso rápido globales

By : Juan Jose Grajeda Cuesi
Para un proyecto que estuve realizando necesitaba una funcionalidad aparentemente muy sencilla y era que al presionar F12 -no importando si la aplicación tiene el foco o no- la aplicación se ocultará o mostrará dependiendo su visibilidad.

Esto quería que funcionará en Windows y GNU/Linux así que investigando me decían que Java no tiene esta funcionalidad y casi grito ¡¡¡¿Por qué?!!! :D. Pero encontré una librería que lo hace y puede implementarlo en Windows, GNU/Linux y Mac, aunque aún en Mac no lo he probado.

Imagen tomada de http://cache.desktopnexus.com
La librería se llama JKeyMaster para que funcione se necesita otra librería llamada JNA. Acá dejo los link de las librerías:
Acá dejo un ejemplo de la solución, lo que hace este ejemplo es que al presionar SHIFT + F9, se oculta la aplicación si esta se encuentra visible y si esta invisible mostrarla:
  • Línea 13 indicamos que necesitamos usar la interfaz HotKeyListener que trabaja similar al ActionListener y como el ActionListener genera un actionPerformed acá es de igual forma solo que con el nombre onHotKey -línea 50-.
  • Línea 27 se encutra la instrucción que permite iniciar por así decirlo con la clase que utilizaremos para el Global Hotkey
  • Línea  31 implentamos que cuando se cierre la aplicación libere las teclas que tenemos por así decirlo en nuestro poder en este caso la combinación de SHIFT+F9 -línea 34-. Luego de esto detenemos el api -línea 35-.
  • Línea 34 registramos la tecla o combinación de las teclas

Acá hay un pequeño detalle y es el modificador, el modificador no lo coloquen con KeyEvent puede que les muestre resultados inesperados. Si no quieren utilizar ningún modificador coloquen un número cero -0-. Por ejemplo que en lugar de SHIFT+F9 únicamente quieran el F9 sería de la siguiente manera:
provider.register( KeyStroke.getKeyStroke( KeyEvent.VK_F9, 0 ), this );

 Los modificadores que pueden usar son los siguientes:

  • InputEvent.SHIFT_DOWN_MASK
  • InputEvent.CTRL_DOWN_MASK
  • InputEvent.META_DOWN_MASK
  • InputEvent.ALT_DOWN_MASK 

Errores que pueden surgir son los siguientes:

  • No registra la tecla: Esté error se da ya que el S.O. ya tiene este tecla en el caso de Windows ya tiene apartada la tecla F12 y al tratar de registrarla no se puede, en este caso use la tecla F9.
  • Execution protection violation: Esto se da cuando al cerrar no liberaron y detuvieron el provider - lo que se encuentra en las líneas 34 y 35-.
  • Error en Linux: Si les truena a pato en Linux es porque no tiene la librería X11 para Linux en mi caso me paso en Linux Mint. Para esto deben instalar el paquete libX11-devel.
Espero que haya sido de utilidad. Dios te bendiga.
Tag : ,

Conocer IP pública en Linux

By : Juan Jose Grajeda Cuesi
Por estar configurando un servidor de correos me toco averiguar cual era la IP pública en la cual estaba pero por despistado no me meti en esas paginas que te dicen tu ip como whatismyipaddress.com sino que averigüe como hacerlo en linux. Y la forma de hacerlo es:

$ curl ifconfig.me
Imagen tomada de: http://www.comusoft.com/
Sencillo, ¿O no? Esto es para cualquier linux hasta donde tengo conocimiento. Si no tienes instalado curl la forma de instalarlo es la siguiente:

Debian/Ubuntu
# apt-get install curl

Red Hat/CentOS/Fedora
# yum install curl

OpenSUSE
# zypper install curl
o
# yast2 -i curl

Espero que sea de utilidad. Dios te bendiga.
Tag : , ,

{JavaFX} Siempre al Frente - Always on Top

By : Juan Jose Grajeda Cuesi
Buscando en internet no e encontrado forma de tener una ventana que este siempre al frente. La única forma que encontre tiene un pequeño inconveniente pero ¡¡¡funciona!!!. 

La forma de hacerlo es crear una ventana con swing, ya sea JFrame, JDialog o JWindow e incrustarle un panel "especial" llamado JFXPanel que puede interactuar con swing. Y este panel se encuentra en javafx.embed.swing.JFXPanel.

Actualmente se dos forma de hacerlo. Una extendiendo de un JFrame, JDialog o JWindow, y la otra forma es extendiendolo de Application pero es como medio mentirosa :D esa forma.
  1. Extendiendo de un JFrame, JDialog o JWindow. Creo que esta sería la mejor forma.
  2. Extendiendo de un Application de JavaFX. Realmente este es como la primer forma y es la que encontre en la web, pero esta forma lo que hace es crear dos ventas una la del Application de JavaFX pero que esta invisible y la otra del JFrame que esta visible.
Cuando tiene el foco:

Cuando pierde el foco pero siempre esta al frente:

Espero que haya sido de ayuda. Dios te bendiga.

{JavaFX} Ventana en JavaFX

By : Juan Jose Grajeda Cuesi
Crear una ventana en JavaFX es muy distinto a crearla en Swing o AWT, ya que maneja una manera un poco extraña para agregar componente ya que primero se debe heredar de una clase Application esta clase tiene un Stage (es como un JFrame) a este Stage hay que agregarle un Scene y este Scene se le debe agregar un Group y al Group se le agregan los componentes Cajas de texto, botones etc.

Les dejo una imagen para que capten una idea:
Imagen tomada de: http://www.aljoscha-rittner.de/blog/
Y si alguien dice ¿¡pero cuando veré el código!? Tranquilo, tranquilo acá va :D

Si estas trabajando en eclipse y tienes problemas con la librería, ya que te las marca como si no existiera agrega la librería a tu proyecto el jar se llama jfxrt.jar y se encuentra en /rutajdk/jre/lib/jfxrt.jar

O puedes ver este post: {Eclipse} Agregar librería -jar- a un proyecto en eclipse aunque parece generico agrego la librería para javaFX.


Si le quiere agregar un componente en este caso un botón es de la siguiente manera:
Dios te bendiga.
Tag : , ,

{Eclipse} Agregar librería -jar- a un proyecto en eclipse

By : Juan Jose Grajeda Cuesi
Para agregar un Jar a nuestro proyecto es sencillo solo tenemos que hacer lo siguiente:

Paso 1:

Hacer clic derecho sobre nuestro proyecto e ir a Propiedades

Paso 2

En la ventana que nos mostrará vamos a Java Build Path, y en las pestañas -Source|Projects|Libraries|Order and Export- seleccionamos Libraries.


Para agregar un jar hay dos formas de agregar de forma interna y agregar de forma externa.
  • De manera interna indica si se quiere agregar una librería -jar- desde los proyectos que estan en el workspace.
  • De manera externa es buscar en una ruta especifica, es decir en cualquier parte de nuestro sistema.

Paso 3

Agregamos el jar en mi caso mostrar como agregarlo de manera externa -Add External JARs...-.

Damos clic en Add External JARs... 
Y nos mostrará una ventana para seleccionar el jar que queremos agregar a nuestro proyecto. En mi caso agregare un jar para que funcione JavaFX el cual se llama jfxrt.jar el cual se encuentra en /rutajdk/jre/lib/jfxrt.jar


Aceptamos y nos motrará la librería agregada:


Y ahora en OK y listo :D

Dios te bendiga.

Tag : , , ,

{Script} Instalación Java JDK en Fedora

By : Juan Jose Grajeda Cuesi
En este post les dejo un Script para la instalación de JDK en Fedora, ¿Por qué lo hice? Bueno porque me iba a tocar instalarlo en varias máquinas así que meter comandos en cada máquina iba a estar un poco complicado, así que hice un script el cual en mi caso me funcionó muy bien en Fedora 17 y 18, puede que tenga algún error y si lo tiene les agradecería que me comentarán acerca del error y así poder arreglarlo para que todo quede de la mejor manera.


Para el script de instalación me base en un post que escribí Instalar Java JDK (Java Development Kit) en Fedora

Para ejecutar el script hay que hacer lo siguiente.

Paso 1.

Se debe descargar Java JDK de la página de oracle http://www.oracle.com/technetwork/java/javase/downloads/index.html

Descargar el archivo con extensión .tar.gz. En mi caso descargue la versión jdk-7u17-linux-i586.tar.gz

Paso 2.

Descargar el script en este link https://www.dropbox.com/s/d2yry23ttngn6va/install-jdk-fedora.sh y colocarlo en la misma carpeta que el archivo -en mi caso- jdk-7u17-linux-i586.tar.gz y asegurarse que solo este un archivo que inicie con la palabra jdk. Es decir no tener por ejemplo un archivo con nombre jdk-7u17-linux-i586.tar.gz y otro con nombre jdk-7u03-linux-i586.tar.gz en el mismo directorio ya que si es así, dará un conflicto.

Luego de descargar el script debemos darle permisos de ejecución, para esto lo primero es acceder donde se encuentra el script, en mi caso esta en /home/usuario/Downloads. Lo siguiente es darle permiso de ejecución:
$ cd /home/usuario/Downloads
$ su -
# chmod +x install-jdk-fedora.sh

Paso 3.

Este es el último paso y es ejecutar el script para ello debemos hacerlo de la siguiente manera
$ ./install-jdk-fedora.sh

Y si salio todo de buena manera aparecerá al final algo como lo siguiente

Para ver lo que hace el script coloco el código:

Espero que sea de utilidad. Dios te bendiga.

- Copyright © Aprendiendo Software - Date A Live - Powered by Blogger - Designed by Johanes Djogan -