Grabar posici贸n al Cerrar
Estoy en mi PRIMERA aplicaci贸n Java y me he quedado clavado en lo siguiente: cuando se cierra la aplicaci贸n, quiero guardar la posici贸n de la ventana para poder recuperarla al llamarla de nuevo y mostrarla en el mismo sitio. Ya tengo un metodo para grabar, pero no puedo llamarlo al cerrar porque no es static. Lo que tengo es esto:
WindowListener escolta = new WindowAdapter() {
public void windowClosing(WindowEvent e) {
gravaStream();
System.exit(0);
}
(...)
boolean gravaStream() {
X = (int)this.getLocation().getX();
Y = (int)this.getLocation().getY();
etc. etc.
Ya s茅 que es muy b谩sico pero ¿alguien puede ayudarme????? que tengo que hacer.
WindowListener escolta = new WindowAdapter() {
public void windowClosing(WindowEvent e) {
gravaStream();
System.exit(0);
}
(...)
boolean gravaStream() {
X = (int)this.getLocation().getX();
Y = (int)this.getLocation().getY();
etc. etc.
Ya s茅 que es muy b谩sico pero ¿alguien puede ayudarme????? que tengo que hacer.
Lo que tienes que hacer es crear una clase que herede de JFrame. Luego sobreescribes su m茅todo processWindowEvent(WindowEvent e). Algo as铆:
processWindowEvent(WindowEvent e) {
if (e.getID == WindowEvent.CLOSING) {
grabaStream();
}
super.processWindowEvent(e);
}
Haciendo esto detecta el evento antes de que se produzca y as铆 lo puede procesar.
Luismahou
processWindowEvent(WindowEvent e) {
if (e.getID == WindowEvent.CLOSING) {
grabaStream();
}
super.processWindowEvent(e);
}
Haciendo esto detecta el evento antes de que se produzca y as铆 lo puede procesar.
Luismahou
Pero como el metodo de detecci贸n del evento windowClosig est谩 dentro del main, el compilador se queja de que "non static method grabaStream cannot be referenced from a static context" :(
por qu茅 no puedo llamar a m茅todos no estaticos desde main, es desesperante, de que me sirve un main completamente aislado del resto de metodos en la clase???
por qu茅 no puedo llamar a m茅todos no estaticos desde main, es desesperante, de que me sirve un main completamente aislado del resto de metodos en la clase???
Las partes de c贸digo est谩ticas pueden ser muy 煤tiles, pero hay que tener mucho cuidado al usarlas. Yo te recomendar铆a que dentro del main() no pusieras mucho c贸digo. Es mejor crear clases que se encargen de construir la aplicaci贸n, y dejar el main s贸lo para motivos de inicializaci贸n. Para evitar el error tienes que sacar el escuchador del main(). Yo te recomendar铆a que tuvieras una clase que heredara de JFrame y que al iniciarse se pusiera el escuchador, o un clase "Controlador" que controlar谩 el flujo de la aplicaci贸n, y desde ella crear la ventana y a帽adirle el escuchador. Y desde el main() simplemente iniciar un objeto de esta clase.
Espero haberte ayudado,
Luismahou
Espero haberte ayudado,
Luismahou