![]() |
| |||||||
| Registrarse | Preguntas Frecuentes | Lista de Foreros | Calendario | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
| | LinkBack | Herramientas | Desplegado |
| |||
| -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hola Estoy mirando un poco de Java2D y tengo este código de un documento que saqué de la red: import java.awt.*; import java.awt.event.*; import javax.swing.*; public class grafica extends JFrame { public grafica() { super("Usando colores."); setSize(400, 130); setVisible(true); } public void paint(Graphics g) { super.paint(g); g.setColor(new Color(255, 0, 0)); g.fillRect(25, 25, 100, 20); g.drawString("Actual RGB: "+g.getColor(), 130, 40); } public static void main(String args[]) { grafica application = new grafica(); application.setDefaultCloseOperation(JFrame.EXIT_O N_CLOSE); } } El problema es que si compilo y ejecuto con el jdk 1.5 pues según lo ejecuto la ventana aparece sin pintar (tengo que tapar la ventana y volver a descubrirla para que se pinte), sin embargo compilando y ejecutando con un jdk 1.4.2, pues sale el rectángulo colorado a la primera ![]() ¿Debo añadir algo para que funcione de forma correcta utilizando el jdk 1.5? Estuve mirando en la página de Sun lo de los cambios que se producen de una versión a otra, pero no me pareció ver nada que me ayudase. Algo que me llama la atención es que si en el método paint pongo un System.out.println("Hola"); el mensaje sale según aparece la ventana, pero sin embargo el rectángulo rojo y lo de 'Actual RGB...' no. Ta llueu. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.2 (GNU/Linux) iD8DBQFC+1nt36vTd3lGvCgRAuRGAJ0SoGOsg07xmTWBbjop/OLFiQutDQCeMrl2 92Xy44B3nu1C7EWY+bEPB1o= =BDgk -----END PGP SIGNATURE----- -- Slackware 10.1.0 Kernel 2.6.12.2 i686 (GCC) 3.3.6 AMD Athlon(tm) 64 Processor 3200+ ( 2200.932MHz ) Linux User #99754 Jabber: koxo***jabber.org Hattrick: C.D. Arrancatapinos (488047) VI.759 |
| | ||||
| ||||
| |
| |||
| Lo primero advertirte que estás dibujando directamente en el JFrame, que es un componente contenedor que ya tiene un componente hijo, que es de clase JRootPane, que a su vez tiene un componente hijo de clase JLayeredPane, que a su vez tiene un componente hijo: el famoso contentPane. Así que estás dibujando sobre el Graphics de un contenedor que tiene ya una estructura de componentes por debajo de él. No es buena idea. Lo mejor es metas un JPanel en el contentPane. Este JPanel es al que has de sobreescribir el método paintComponent (mejor que sobreescribir paint() para el caso de componentes de peso ligero). Estuve haciendo pruebas de tu programa con JDK 1.5.0_02. Pude comprobar que: 1. Al aparecer el JFrame por primera vez, todo se dibuja bien. 2. Al hacer más pequeña la ventana, se dibuja bien. 3. Al agrandar la ventana se dibuja mal porque, como último paso, el contentPane se pinta entero, tapando lo que se había pintado previamente dentro de paint(). Esto no sé explicarlo, no he llegado a entender por qué pasa. La diferencia que hay entre las situaciones 1 y 2 es que el objeto Graphics que se pasa al método tiene unos clipBounds diferentes, claro. En esa dirección tiene que ir la explicación. Saludos, Tito |
| |||
| Lo primero advertirte que estás dibujando directamente en el JFrame, que es un componente contenedor que ya tiene un componente hijo, que es de clase JRootPane, que a su vez tiene un componente hijo de clase JLayeredPane, que a su vez tiene un componente hijo: el famoso contentPane. Así que estás dibujando sobre el Graphics de un contenedor que tiene ya una estructura de componentes por debajo de él. No es buena idea. Lo mejor es metas un JPanel en el contentPane. Este JPanel es al que has de sobreescribir el método paintComponent (mejor que sobreescribir paint() para el caso de componentes de peso ligero). Estuve haciendo pruebas de tu programa con JDK 1.5.0_02. Pude comprobar que: 1. Al aparecer el JFrame por primera vez, todo se dibuja bien. 2. Al hacer más pequeña la ventana, se dibuja bien. 3. Al agrandar la ventana se dibuja mal porque, como último paso, el contentPane se pinta entero, tapando lo que se había pintado previamente dentro de paint(). Esto no sé explicarlo, no he llegado a entender por qué pasa. La diferencia que hay entre las situaciones 1 y 2 es que el objeto Graphics que se pasa al método tiene unos clipBounds diferentes, claro. En esa dirección tiene que ir la explicación. Saludos, Tito |
| |||
| Lo primero advertirte que estás dibujando directamente en el JFrame, que es un componente contenedor que ya tiene un componente hijo, que es de clase JRootPane, que a su vez tiene un componente hijo de clase JLayeredPane, que a su vez tiene un componente hijo: el famoso contentPane. Así que estás dibujando sobre el Graphics de un contenedor que tiene ya una estructura de componentes por debajo de él. No es buena idea. Lo mejor es metas un JPanel en el contentPane. Este JPanel es al que has de sobreescribir el método paintComponent (mejor que sobreescribir paint() para el caso de componentes de peso ligero). Estuve haciendo pruebas de tu programa con JDK 1.5.0_02. Pude comprobar que: 1. Al aparecer el JFrame por primera vez, todo se dibuja bien. 2. Al hacer más pequeña la ventana, se dibuja bien. 3. Al agrandar la ventana se dibuja mal porque, como último paso, el contentPane se pinta entero, tapando lo que se había pintado previamente dentro de paint(). Esto no sé explicarlo, no he llegado a entender por qué pasa. La diferencia que hay entre las situaciones 1 y 2 es que el objeto Graphics que se pasa al método tiene unos clipBounds diferentes, claro. En esa dirección tiene que ir la explicación. Saludos, Tito |
| |||
| -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 A las 13:58 del viernes 12 de agosto, Tito <titogarcia_borra_esto***gmail.com> hablando de Re: Problema con el paint según la versión del jdk en es.comp.lenguajes.java dijo... Hola > Lo primero advertirte que estás dibujando directamente en el > JFrame, que es un componente contenedor que ya tiene un > componente hijo, que es de clase JRootPane, que a su vez tiene > un componente hijo de clase JLayeredPane, que a su vez tiene un > componente hijo: el famoso contentPane. Pues vaya :-O. La verdad, es que el código ese es un ejemplo de un documento que saqué de por ahí, porque yo de momento no estoy muy puesto en esto. > Así que estás dibujando sobre el Graphics de un contenedor que > tiene ya una estructura de componentes por debajo de él. No es > buena idea. Lo mejor es metas un JPanel en el contentPane. Este > JPanel es al que has de sobreescribir el método paintComponent > (mejor que sobreescribir paint() para el caso de componentes de > peso ligero). Vale, me apunto esto y lo miraré con mas detenimiento. > Estuve haciendo pruebas de tu programa con JDK 1.5.0_02. Yo tengo... 1.5.0_04. > Pude comprobar que: > > 1. Al aparecer el JFrame por primera vez, todo se dibuja bien. Pues a mi me sale una ventana en blanco. Ah, y en mi post original, puse algo incorrecto. Puse que si añadía un System.out.println("Hola");, al ejecutar el programa salía el 'Hola' por pantalla pero no se pintaba nada en la ventana. Pues bien, no, no sale el 'Hola', así que debo suponer que de la que se muestra la ventana no se llama al método paint :-O > 2. Al hacer más pequeña la ventana, se dibuja bien. También pasa de mi ¡me tiene manía! ![]() > 3. Al agrandar la ventana se dibuja mal porque, como último > paso, el contentPane se pinta entero, tapando lo que se había > pintado previamente dentro de paint(). Esto no sé explicarlo, > no he llegado a entender por qué pasa. Esto también me pasa a mi. Bueno, al menos a mi me da todos los fallos XD > La diferencia que hay entre las situaciones 1 y 2 es que el > objeto Graphics que se pasa al método tiene unos clipBounds > diferentes, claro. En esa dirección tiene que ir la > explicación. ¿Sería mucha molestía que me explicases esto? De todas formas empezaré a echarle un vistazo al libro 'Java 2D Graphics' a ver si veo algo. Muchas gracias por tu respuesta. Miraré lo de utilizar un JPanel y a ver que sale. > Saludos, Ta llueu. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.2 (GNU/Linux) iD8DBQFC/Nw136vTd3lGvCgRAh0AAJ9fThyszaErQ/F83H/fN4kEC8kp3ACeKkA4 TrSrbVnv625toBQU7/bz8d0= =LxnQ -----END PGP SIGNATURE----- -- Slackware 10.1.0 Kernel 2.6.12.2 i686 (GCC) 3.3.6 AMD Athlon(tm) 64 Processor 3200+ ( 2200.932MHz ) Linux User #99754 Jabber: koxo***jabber.org Hattrick: C.D. Arrancatapinos (488047) VI.759 |
| |||
| -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 A las 13:58 del viernes 12 de agosto, Tito <titogarcia_borra_esto***gmail.com> hablando de Re: Problema con el paint según la versión del jdk en es.comp.lenguajes.java dijo... Hola > Lo primero advertirte que estás dibujando directamente en el > JFrame, que es un componente contenedor que ya tiene un > componente hijo, que es de clase JRootPane, que a su vez tiene > un componente hijo de clase JLayeredPane, que a su vez tiene un > componente hijo: el famoso contentPane. Pues vaya :-O. La verdad, es que el código ese es un ejemplo de un documento que saqué de por ahí, porque yo de momento no estoy muy puesto en esto. > Así que estás dibujando sobre el Graphics de un contenedor que > tiene ya una estructura de componentes por debajo de él. No es > buena idea. Lo mejor es metas un JPanel en el contentPane. Este > JPanel es al que has de sobreescribir el método paintComponent > (mejor que sobreescribir paint() para el caso de componentes de > peso ligero). Vale, me apunto esto y lo miraré con mas detenimiento. > Estuve haciendo pruebas de tu programa con JDK 1.5.0_02. Yo tengo... 1.5.0_04. > Pude comprobar que: > > 1. Al aparecer el JFrame por primera vez, todo se dibuja bien. Pues a mi me sale una ventana en blanco. Ah, y en mi post original, puse algo incorrecto. Puse que si añadía un System.out.println("Hola");, al ejecutar el programa salía el 'Hola' por pantalla pero no se pintaba nada en la ventana. Pues bien, no, no sale el 'Hola', así que debo suponer que de la que se muestra la ventana no se llama al método paint :-O > 2. Al hacer más pequeña la ventana, se dibuja bien. También pasa de mi ¡me tiene manía! ![]() > 3. Al agrandar la ventana se dibuja mal porque, como último > paso, el contentPane se pinta entero, tapando lo que se había > pintado previamente dentro de paint(). Esto no sé explicarlo, > no he llegado a entender por qué pasa. Esto también me pasa a mi. Bueno, al menos a mi me da todos los fallos XD > La diferencia que hay entre las situaciones 1 y 2 es que el > objeto Graphics que se pasa al método tiene unos clipBounds > diferentes, claro. En esa dirección tiene que ir la > explicación. ¿Sería mucha molestía que me explicases esto? De todas formas empezaré a echarle un vistazo al libro 'Java 2D Graphics' a ver si veo algo. Muchas gracias por tu respuesta. Miraré lo de utilizar un JPanel y a ver que sale. > Saludos, Ta llueu. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.2 (GNU/Linux) iD8DBQFC/Nw136vTd3lGvCgRAh0AAJ9fThyszaErQ/F83H/fN4kEC8kp3ACeKkA4 TrSrbVnv625toBQU7/bz8d0= =LxnQ -----END PGP SIGNATURE----- -- Slackware 10.1.0 Kernel 2.6.12.2 i686 (GCC) 3.3.6 AMD Athlon(tm) 64 Processor 3200+ ( 2200.932MHz ) Linux User #99754 Jabber: koxo***jabber.org Hattrick: C.D. Arrancatapinos (488047) VI.759 |
| |
| |
| |||
| -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 A las 13:58 del viernes 12 de agosto, Tito <titogarcia_borra_esto***gmail.com> hablando de Re: Problema con el paint según la versión del jdk en es.comp.lenguajes.java dijo... Hola > Lo primero advertirte que estás dibujando directamente en el > JFrame, que es un componente contenedor que ya tiene un > componente hijo, que es de clase JRootPane, que a su vez tiene > un componente hijo de clase JLayeredPane, que a su vez tiene un > componente hijo: el famoso contentPane. Pues vaya :-O. La verdad, es que el código ese es un ejemplo de un documento que saqué de por ahí, porque yo de momento no estoy muy puesto en esto. > Así que estás dibujando sobre el Graphics de un contenedor que > tiene ya una estructura de componentes por debajo de él. No es > buena idea. Lo mejor es metas un JPanel en el contentPane. Este > JPanel es al que has de sobreescribir el método paintComponent > (mejor que sobreescribir paint() para el caso de componentes de > peso ligero). Vale, me apunto esto y lo miraré con mas detenimiento. > Estuve haciendo pruebas de tu programa con JDK 1.5.0_02. Yo tengo... 1.5.0_04. > Pude comprobar que: > > 1. Al aparecer el JFrame por primera vez, todo se dibuja bien. Pues a mi me sale una ventana en blanco. Ah, y en mi post original, puse algo incorrecto. Puse que si añadía un System.out.println("Hola");, al ejecutar el programa salía el 'Hola' por pantalla pero no se pintaba nada en la ventana. Pues bien, no, no sale el 'Hola', así que debo suponer que de la que se muestra la ventana no se llama al método paint :-O > 2. Al hacer más pequeña la ventana, se dibuja bien. También pasa de mi ¡me tiene manía! ![]() > 3. Al agrandar la ventana se dibuja mal porque, como último > paso, el contentPane se pinta entero, tapando lo que se había > pintado previamente dentro de paint(). Esto no sé explicarlo, > no he llegado a entender por qué pasa. Esto también me pasa a mi. Bueno, al menos a mi me da todos los fallos XD > La diferencia que hay entre las situaciones 1 y 2 es que el > objeto Graphics que se pasa al método tiene unos clipBounds > diferentes, claro. En esa dirección tiene que ir la > explicación. ¿Sería mucha molestía que me explicases esto? De todas formas empezaré a echarle un vistazo al libro 'Java 2D Graphics' a ver si veo algo. Muchas gracias por tu respuesta. Miraré lo de utilizar un JPanel y a ver que sale. > Saludos, Ta llueu. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.2 (GNU/Linux) iD8DBQFC/Nw136vTd3lGvCgRAh0AAJ9fThyszaErQ/F83H/fN4kEC8kp3ACeKkA4 TrSrbVnv625toBQU7/bz8d0= =LxnQ -----END PGP SIGNATURE----- -- Slackware 10.1.0 Kernel 2.6.12.2 i686 (GCC) 3.3.6 AMD Athlon(tm) 64 Processor 3200+ ( 2200.932MHz ) Linux User #99754 Jabber: koxo***jabber.org Hattrick: C.D. Arrancatapinos (488047) VI.759 |
![]() |
| Herramientas | |
| Desplegado | |
| |
Temas Similares | ||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Problema adicional de I-Worm/Bagle con carpetas Hidden segun perfi | devhi0000 | Newsgroup microsoft.public.es.windows.server.general | 2 | 20-04-2008 04:31:00 |
| Paint: resolución del color | javimer | Newsgroup microsoft.public.es.windowsxp.aplicaciones | 0 | 30-01-2008 15:01:04 |
| ActiveX lapiz de paint | Jesus Suarez | Newsgroup microsoft.public.es.asp | 0 | 27-11-2007 17:33:01 |
| Paint | Maria | Newsgroup microsoft.public.es.windowsxp.aplicaciones | 10 | 09-07-2007 10:28:16 |
| ms Paint con jpeg | fran | Newsgroup microsoft.public.es.photodraw | 0 | 28-10-2003 15:41:00 |