Problema con un JDesktopPane

Iniciado por beker, 14 Julio 2010, 23:24 PM

0 Miembros y 3 Visitantes están viendo este tema.

beker

Buenas!!!!

Soy un poco "novatillo" en lo concerniente a Java y me he tropezado con un pequeño enigma que se escapa a mis conocimientos....

Lo que ocurre en el programa es lo siguiente:

Al iniciar la ejecución de mi programa tenemos éste aspecto que es el deseado.






Sin embargo, al presionar con el ratón en cualquier lugar dentro del cuadro rojo se produce algún tipo de evento que descoloca todo en los internalFrames. También ocurre cuando se minimiza la aplicación y cuando se aumenta-reduce el tamaño de la ventana de la aplicación. En verde aparece señaladas algunas de las diferencias.






No tengo ningun evento registrado del JDesktopPane y no sé como evitar que ésto suceda, si alguién tiene alguna idea de por dónde sería de gran ayuda!!

Muchas gracias de antemano.

Un saludo


Leyer

#1
1. Agrega los conponentes nuevamente
2. utiliza paneles y pendiente de los layauts de estos
3. el ScrollPane del internalFrame visualizacion no aparece por que no es necesario segun veo


beker

Cita de: LEYER en 14 Julio 2010, 23:54 PM
1. Agrega los conponentes nuevamente
2. utiliza paneles y oendiente de los layauts de estos
3. el ScrollPane del internalFrame visualizacion no aparece por que no es necesario segun veo



Buenas Leyer, gracias por contestar.

La estructura que tiene todo ésto es:

jDesktopPane <- jPanel <- jScrollPane <- JTextArea

el jScrollPane toma las medidas del jDesktopPane para ajustarse a su tamaño. Pensé en quitar el jPanel de enmedio puesto que sólo van a tener el jScrollPane cada ventana pero no fue una buena idea(ahora no recuerdo porque...)

Lo único que se me ocurre sería registrar todos los eventos del jDesktopPanel general y que no haga nada, pero creo que sería una solución demasiado drastica y me mosquea que se cambien las cosas a algo que no es lo que se ha especificado en ninguna parte.

Pongo un poco de codigo por si ayuda...


outputText = new JTextArea(null, null, 20, 80);
outputText.setEditable(false);
outputScroll = new JScrollPane(outputText);
outputScroll.setSize(asphaleia.getMessageStructureFramePanel().getWidth(), asphaleia.getMessageStructureFramePanel().getHeight());


p.d: acabo de percatarme de que al cambiar de tamaño toma los valores de tamaños especificados en JTextArea(null, null, 20, 80); ignorando el size del jScrollPane, y si no especifico tamaño en jtextArea() al cambiar de tamaño la ventana se ajusta a la línea de texto más larga por defecto evitando así que salgan los scrollbar...

Leyer

#3
Intenta agregándole al panel un GridLayout y no le especificas el tamaño del JTextarea

Código (java) [Seleccionar]
setLayout(new GridLayout(1,1));

y eliminas esta linea
Código (java) [Seleccionar]
outputScroll.setSize(asphaleia.getMessageStructureFramePanel().getWidth(), asphaleia.getMessageStructureFramePanel().getHeight());

beker

Joer!!!! q crack!!!!!!!!!

Al jPanel sí que le había puesto un Gridlayout al situarlo en el JInternalFrame pero me olvide por completo de ponerselo al jScrollPane por eso que luego salía donde le apetecia pffff qué cosas :)

Muchas gracias por la clase maestra!

Un saludo!

Leyer

Cita de: beker en 15 Julio 2010, 00:43 AM
Joer!!!! q crack!!!!!!!!!

Al jPanel sí que le había puesto un Gridlayout al situarlo en el JInternalFrame pero me olvide por completo de ponerselo al jScrollPane por eso que luego salía donde le apetecia pffff qué cosas :)

Muchas gracias por la clase maestra!

Un saludo!

Aunque no entendí esa ultima parte que dijiste de que la agregaste el layaut al JScrollPane según creo que no se le puede colocar un layaut a ese componente.

Pero bueno lo importante es que lo solucionaste.

PD: Sera  maestro :xD

Un saludo.