Foro de elhacker.net

Programación => Java => Mensaje iniciado por: zonahurbana en 9 Febrero 2014, 19:53 pm



Título: Acerca de JFrame usando Netbeans
Publicado por: zonahurbana en 9 Febrero 2014, 19:53 pm
He creado un programa con interfaz gráfica usando Netbeans pero sin usar el asistente para crear GUI.
En dicho programa (escrito a puro código) he usado colores que ya vienen predefinidos... como CYAN, BLACK, WHITE de clase Color. Pero recordé que hay otros tipos de colores que también están predefinidos, y como no sé cómo agregarlos, he creado un JFrame Form con el asistente para asignar tal color, luego ver el código y copiarlo a mi programa que está sin el asistente.

Lo malo es que, lo que se muestra en la vista de diseño no es lo mismo a lo que se ejecuta:
(https://scontent-a-mia.xx.fbcdn.net/hphotos-ash3/t1/1794688_10151996626131297_1927513617_n.jpg)
(https://fbcdn-sphotos-c-a.akamaihd.net/hphotos-ak-frc3/t1/1897787_10151996626136297_2139265120_n.jpg)

¿A qué podría deberse?

He buscado en el código, y lo que se ha autogenerado es:
Código:
jPanel1.setBackground(javax.swing.UIManager.getDefaults().getColor("nb.output.selectionBackground"));


Título: Re: Acerca de JFrame usando Netbeans
Publicado por: Mitsug en 10 Febrero 2014, 14:03 pm
No sé la razón de dicho problema ya que uso JavaFX para aplicaciones escritorio. ¿Por qué no le asignas manualmente el color por medio de valores RGB?

Código
  1. jPanel1.setBackground(new Color(rojo,verde,azul));
  2.  


Salu2.


Título: Re: Acerca de JFrame usando Netbeans
Publicado por: zonahurbana en 10 Febrero 2014, 15:08 pm
Bueno, yo he creado un programa que resuelve cierto tipo de ejercicios de un curso que estoy llevando. Son operaciones básicas las que se realizan pero se realizan sobre una tabla y como el proceso es largo uno puede equivocarse fácilmente... por ello decidí hacerlo. El programa genera la tabla y opera sobre ella explicando paso a paso qué es lo que está haciendo.

Sólo que no he usado JTable, porque no comprendo muy bien cómo usar esta clase. Cuando busqué información, vi que había que usar otras clases como intermediario para pasarle los datos que debe llenar en cada celda. Además, necesitaba crear un cuadro de doble entrada y con JTable sólo se pueden poner encabezados en las columnas y no por filas (hay un modo, pero agrega más código aún).

La tabla que el programa crea puede tener más filas o más columnas dependiendo de los datos ingresados, y lo hice todo a puro GridLayout... incluyendo muchos paneles en el panel principal y que tengan FlowLayout para que aparezcan centrados.

Pero lo malo es que dicha tabla no se ve muy bien, en comparación de un JTable. Y estaba pensando si podría hacer que tome la misma apariencia que un JTable. Pero creo que eso no es puro color sino que incluye cierto estilo de sombreado o borde tal vez.

Gracias por su ayuda... tal vez usted conozca cómo copiar el estilo de un JTable jeje


Título: Re: Acerca de JFrame usando Netbeans
Publicado por: Mitsug en 10 Febrero 2014, 15:20 pm
El problema con Swing es que no es posible llevar un componente más allá de lo que permite. Es una tecnología algo vieja.

Te invitaría a investigar un poco sobre JavaFX, es mucho más flexible, organizado moderno e increíblemente potente. Puedes realizar animaciones en tiempo real, insertar multimedia, y mucho más de lo que puedes hacer con Swing.

El equivalente a JTable en JavaFX es TableView. Con TableView puedes crear 'subcolumnas' dentro de una misma, o dividir la columna. Te dejo una imagen de ejemplo por si es lo que quieres:

(http://docs.oracle.com/javafx/2/ui_controls/img/table-nested.png)

Te dejo el tuto: Tutorial TableView JavaFX] (http://docs.oracle.com/javafx/2/ui_controls/table-view.htm)


Título: Re: Acerca de JFrame usando Netbeans
Publicado por: zonahurbana en 11 Febrero 2014, 04:35 am
La verdad es que siempre tuve cierta duda sobre JavaFX (porque aparece entre las opciones cuando se va a crear un proyecto en Netbeans)... y no sabía que era más moderno que Java Swing. ¿JavaFX es entonces otro conjunto de métodos al que debería acostumbrarme?

De momento creo que continuaré usando Swing porque es lo que llevaré en el ciclo entrante. Y el tipo de tablas que buscaba crear aparece en la siguiente entrada:
http://foro.elhacker.net/java/como_crear_este_tipo_de_tablas-t408389.0.html

Ahora ya tiene color de fondo y ciertos bordes pero sigue sin verse como debería.

Muchas gracias por su ayuda.


Título: Re: Acerca de JFrame usando Netbeans
Publicado por: Mitsug en 11 Febrero 2014, 13:54 pm
Efectivamente JavaFX ha sido liberado para reemplazar a Swing. Oracle quiere incursionar más en el mundo móvil en un futuro para no dejarle todo el campo a HTML5, y lo tiene pensado hacer con JavaFX. No creo que tenga mucho éxito, aunque es prematuro decirlo ahora, ya que JavaFX es una tecnología muy joven pero muy bien diseñada y estructurada.

Puedes aprender los dos, Swing y JavaFX, e incluso insertar contenido JavaFX dentro de una aplicación Swing, así que no hay rollo por eso, aprende los dos paralelamente, lo que haces intenta hacerlo con JavaFX para que vayas aprendiendo.

Si has utilizado Visual Studio, habrás usado el diseñador UI que tiene integrado, pues bien, Oracle ha diseñado una herramienta programada en JavaFX llamada JavaFX Scene Builder (http://www.oracle.com/technetwork/java/javafx/downloads/index-jsp-136193.html) que te permite realizar las GUI en poco tiempo, lo bueno es que, en vez de generar código Java sucio (como Swing & Netbeans) genera código FXML (http://docs.oracle.com/javafx/2/get_started/fxml_tutorial.htm), que no es más que un nuevo lenguaje de marcado para crear GUI's en FXML, ofreciéndote así la estructura ideal para el paradigma de desarrollo MVC (https://www.google.com.pe/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&ved=0CCUQFjAA&url=http%3A%2F%2Fes.wikipedia.org%2Fwiki%2FModelo_Vista_Controlador&ei=Gx36UvjEIueT1AGIiIH4Cg&usg=AFQjCNHC6LGn66B_2ZZuwls2xTXraaz-Kg&bvm=bv.61190604,d.dmQ). Te permite además aplicar estilos css a lo que desees por medio de un archivo .css que previamente has hecho, eligiendo qué clase (estilos) aplicar a un componente.

Suerte amigo, un saludo.