2012-10-12 115 views
5

Tengo una pregunta general que está relacionada con Java.¿Cómo actualizo una GUI en Java?

Estoy escribiendo una aplicación que tiene un menú de GUI. Estoy tratando de cambiar una parte del menú de la GUI en función de la selección de un botón de Radio.

¿Es necesario:

  1. Vuelva a dibujar la ventana entera o simplemente actualizar esa parte con:

    setVisible(true)? 
    
  2. Si sólo tiene que utilizar la declaración de # 1 por encima de la interfaz gráfica de usuario es .. bien, hasta que mueva el mouse sobre él y luego vea la opción del botón anterior. ¿Qué estoy haciendo mal?

+0

Creo que hay un método paint() – amphibient

+0

repinte() es, probablemente, lo que wnat – jozefg

+0

me trató simplemente el método repaint() y no funcionó en absoluto. Intenté setVisible (verdadero) junto con eso y eso tampoco funcionó. – ironmantis7x

Respuesta

6

Los componentes oscilantes tienen los métodos repintar(), revalidar() y doLayout(). Uno de ellos debería ser capaz de volver a dibujar cualquier pieza que desee. Sin embargo, DoLayout no es algo de lo que usted deba responsabilizarse, esa es la responsabilidad de los motores de diseño.

Quizá le interese consultar this post, la primera respuesta tiene una explicación bastante buena y enlaces a un artículo con más detalles.

En términos de la segunda parte de su pregunta, no estoy seguro, pero es posible que necesitemos ver un código para tener una idea. ¿El "área reemplazada" en realidad se está eliminando de la vista?

+1

¿qué debo importar para usar repaint() o doLayout()? – ironmantis7x

+0

No tendría que importar nada adicional, estos deberían ser métodos en los componentes Swing que está utilizando - vea los documentos http://docs.oracle.com/javase/6/docs/api/java/awt/Component .html. Cualquier subclase de Component debería tener esos métodos disponibles. – shortstuffsushi

+0

Evita llamar directamente a doLayout, si te encuentras en una posición en la que esto es lo único que funciona, entonces has hecho una cosa incorrecta. doLayout debería afectar más el solo su contenedor actual. En su lugar, use invalidar en su lugar – MadProgrammer

0

Llame al revalidate() en el componente de nivel superior.

+0

Soy nuevo en Java, así que tenga paciencia conmigo ... ¿cómo puedo llamar a revalidate() en el componente de nivel superior? cada vez que intento insertarlo después de volver a pintar(), aparece un error de compilación. – ironmantis7x

4

..en mi aplicación, el usuario selecciona qué tipo de plataforma de dispositivo quiere que se pruebe (esa opción es un conjunto de dos botones de opción a la izquierda). Cuando el usuario selecciona Android o iOS, la agrupación central de casillas de verificación cambia para reflejar un grupo de dispositivos Android que pueden probar o un grupo de dispositivos iOS que pueden probar.

  1. Deja un panel en el 'centro de la agrupación'.
  2. Utilice un CardLayout para el panel.
  3. Agregue iOScontroles de Android al panel con el diseño de la tarjeta.
  4. Voltear entre ellos según sea necesario.