Pregunta

Actualmente estoy tratando de construir un panel desplegable en Swing (similar al control Expander de WPF) y me gustaría conservar los métodos habituales para manipularlo (es decir, setLayout , add , etc.). Solo deben enrutarse a un panel incrustado (el que se muestra u oculta).

¿Cómo haría uno eso? Anular todos los métodos de JComponent y redirigirlos a un JPanel incrustado sería engorroso, pero esa es la única forma en que veo.

¿O debería preferir hacer que el panel incrustado sea visible para el exterior y obligar a los usuarios a usar algo como ExpanderPanel.getInnerPanel () en su lugar. Pero entonces no es un reemplazo directo para JPanel que creo que sería bueno tener.

¿Fue útil?

Solución

En 1.5 (ish) Swing encaminó algunos métodos al panel de contenido en JFrame , JApplet , etc. Si bien parece haber algunos beneficios de usabilidad para aquellos que recién comienzan , en realidad no soluciona el problema. Por lo tanto, todos tienen que lidiar con una API de comportamiento muy extraño. Entonces, mi consejo es evitar este enfoque.

Otros consejos

Eche un vistazo al JXTaskPane del proyecto Swingx . Ya hace lo que necesitas.

Si tiene un widget de Contenedor que contiene un panel que desea mostrar y ocultar, ¿por qué no diseñar su panel interno como desee, luego agregarlo al panel de Contenedor, luego usar métodos estáticos contra el Contenedor para decir

JPanel p = nuevo JPanel (); // hacer algo con el JPanel ...

ContainerWidget.setContent (p);

ContainerWidget.expandPanel (p, verdadero);

¿Algo le gustaría a este trabajo?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top