Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > setDefaultCloseOperation(JFrame.ICONIFIED);

Hola chicos/as soy Ana otra vez y vengo a traerles un problema que no soluciono por mí misma ;(
Estoy revisando códigos Java para ir aprendiendo y me he encontrado con esta sentencia:

setDefaultCloseOperation(JFrame.ICONIFIED);

Según he logrado entender, a través de foros, es que sirve para llevar la aplicación a la bandeja de sistema, una vez que pulsamos cerrar en la ventana de la aplicación.
Hasta ahí no veo ningún problema, han programado eso en vez de que se cierre, fin.
Mi duda, problema es el siguiente.Me voy a JavaDoc a revisar este método y ver cómo funciona.Cual es mi sorpresa que no está el siguiente atributo, o sea,
¿cómo iba yo a saber que se podía hacer eso?¿Cómo el programador averiguó que se ponía así si en la documentación oficial no aparece?
Más abajo pongo los enlaces del JavaDoc y lo único que aparece en los atributos del método.
Un besito y gracias si me pueden ayudar.Saludos


http://docs.oracle.com/javase/7/docs/api/javax/swing/JFrame.html#setDefaultCloseOperation%28int%29

http://docs.oracle.com/javase/7/docs/api/javax/swing/WindowConstants.html

***ATRIBUTOS DE METODO, SEGÚN JAVADOC***

static int DISPOSE_ON_CLOSE
The dispose-window default window close operation.
static int DO_NOTHING_ON_CLOSE
The do-nothing default window close operation.
static int EXIT_ON_CLOSE
The exit application default window close operation.
static int HIDE_ON_CLOSE
The hide-window default window close operation

abril 9, 2014 | Unregistered CommenterAna

Sí aparece en los Javadocs :)
Pero no en los de JFrame, sino en los de Frame.
JFrame extiende Frame, y por lo tanto hereda todas las propiedades públicas de esta última.

http://docs.oracle.com/javase/8/docs/api/java/awt/Frame.html

abril 9, 2014 | Registered Commenterchoces

Buenas,

Estoy revisando códigos Java para ir aprendiendo y me he encontrado con esta sentencia:

setDefaultCloseOperation(JFrame.ICONIFIED);

Has probado esto y funciona? Yo creo que no.

Según he logrado entender, a través de foros, es que sirve para llevar la aplicación a la bandeja de sistema, una vez que pulsamos cerrar en la ventana de la aplicación.

En que foros has mirado? Yo no he encontrado ninguno que diga eso.

La constante ICONIFIED no se puede usar de esa manera. Compila porque es un entero, pero al cerrarse no se queda en el tray. Lo que sucede es que se oculta la aplicacion, ya que su valor es 1, como sucede con la constante HIDE_ON_CLOSE.

http://stackoverflow.com/questions/9964116/how-to-put-java-application-in-systemtray-when-user-clicks-on-close-windows

Un codigo rapido de test para que lo pruebes. Lo puedes meter en un main:

JFrame frame = new JFrame("FrameDemo");
frame.setDefaultCloseOperation(JFrame.ICONIFIED);
JLabel label = new JLabel("Test");
frame.getContentPane().add(label, BorderLayout.CENTER);
frame.pack();
frame.setVisible(true);

Un saludo

abril 9, 2014 | Unregistered CommenterUnoPorAhi

Hola Ana.

Este método lo que espera es un int.
JFrame.ICONIFIED es una constante de tipo int que vale 1.
El resultado es exactamente lo mismo que usar el valor HIDE_ON_CLOSE que tambien vale 1.

Personalmente no me parece bien usar JFrame.ICONIFIED que es una constante para otro tipo de labor en este método, aunque su valor sea idéntico. Podría cambiar en futuras versiones.

Un saludo

abril 9, 2014 | Unregistered CommenterPaposo

Caramba!
Tres respuestas casi simultaneas!

jejeje

abril 9, 2014 | Unregistered CommenterPaposo

http://docs.oracle.com/javase/8/docs/api/java/awt/Frame.html#setExtendedState-int-

Eso es lo que necesitas si quieres controlar el estado de la ventana.

abril 9, 2014 | Registered Commenterchoces

********
choces
*********
GRACIAS, como siempre velocidad en tu respuesta y bien explicadito.Creo que debo de aprender a manejar JavaDoc antes de leer más de Java jiji, porque me pasé un rato grande buscando y no me aparecía por ningún lado ICONIFIED ;(
Un besito gordo.
********
UnoPorAhi
********
No he probado el proyecto porque voy línea por línea leyéndolo y es de más de 1000 líneas y varias clases, con lo cual puede que esté un mes o más hasta que lo termine y lo entienda.
Respecto a los foros, pues al leerlo en inglés, que por desgracia no domino, lo entendí así.Al parecer, y gracias a tu respuesta, es "lo mismo" que HIDE_ON_CLOSE.
Más o menos voy entendiendo jeje, gracias y otro besote para ti.
********
Paposo
********
Gracias por tu guiño, es curioso, no había caído en que si usas una constante que no es la que deberías se puede cambiar el valor en otra versión y dar al traste con el programa.Besitos

abril 9, 2014 | Unregistered CommenterAna

Los tres a la vez, que bueno

abril 9, 2014 | Unregistered CommenterUnoPorAhi

No metáis codos, que tengo las costillas delicadas :D

abril 9, 2014 | Registered Commenterchoces

Guenas.

He estado mirando algunos productos gratuitos que tal vez puedan ayudar a Ana.

Mírate el plugin/libreria Java Orchid Components.
Te permitirá crear un icono en la bandeja del sistema con su menú, globos de mensajes de la aplicación, etc, con muy poco trabajo por tu parte.

Un saludo,
Paposo

abril 12, 2014 | Unregistered CommenterPaposo