Pregunta

Estoy teniendo problemas para averiguar éste hacia fuera.

La situación no es difícil imaginar lo que espero que pude publicar esto sin un código de ejemplo. Tengo JPanel con CardLayout. El panel contiene varios otros paneles como fichas individuales. Lo que estoy tratando de achive es crear un JButton que hará la demostración del panel principal pestaña abrió por última vez (la anterior a la actual fue mostrado). No es gran cosa que pensé al principio.

Así que comenzó por pensar cómo conseguir la pestaña visible actual (el panel) y descubrió que no existe un método nativo para que en el Panel o más bien CardLayout que sólo contiene métodos primero (), pasado (), next () y anterior () que son inútiles para mí.

A continuación, pensé que a lo mejor a achive mi objetivo que podría ir a través de todos los componentes del panel principal y de prueba que uno es visible lo que sería la actual. Me resulta un poco complicado, muy bien, pero ¿cómo puedo hacer que esta demostración del panel por CardLayout si no tengo su nombre tarjeta para llamar al método CardLayout espectáculo (padre, nombre)?

En este punto, no tengo ni idea. He estado buscando a través de Internet, pero no han encontrado una solución, solo que pocas personas han estado tratando de encontrar algo similar. Así que espero que alguien que ya begrenset con este tipo de problema se encuentra con este tema: -)

Gracias por cualquier sugerencia.

Saludos

Martin S.

¿Fue útil?

Solución

Esto nos lleva a la cuestión de cómo llegó a la tarjeta actual en el primer lugar. Si utilizó next() para llegar a la tarjeta actual, entonces previous() para poder llegar a la tarjeta anterior y viceversa. Si utiliza first() o last(), entonces estás de suerte.

Por supuesto, siempre se puede duplicar parte de la información almacenada por el CardLayout para lograr su objetivo: si se mantiene una serie de nombres de los componentes (y actualizarlo cada vez que llame addLayoutComponent), así como un índice anterior (y actualizar esta con next, previous y otras llamadas), a continuación, puedes buscar el nombre del componente y el uso previo show para mostrar la tarjeta anterior.


Actualización: Ya que sabes los nombres de ficha, aquí es cómo se puede mantener el nombre de la ficha anterior:

String prevTab, curTab;

public void showTab(String newTab) {
  prevTab = curTab;
  curTab = newTab;
  layout.show(parent, curTab);
}

public void goBack() {
  layout.show(parent, prevTab);
}

Otros consejos

Se puede crear un mapa de correlación de objetos. Y añadir paneles y nombres a disposición de la tarjeta y el mapa. Después, si usted tiene la JPanel mostrado anteriormente, se obtiene su nombre del mapa a través de map.get (JPanel p). Y para encontrar lo que JPanel era visible antes del momento, tendrá que añadir a cada ComponentListener JPanel. Y hacer que cambie alguna variable estática en caso componentHidden (por ejemplo estática JPanel prev_shown).

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