Le CardLayout ne sais pas ce que le panneau sélectionné actuellement est.
Vous devez garder cela en mémoire vous-même, lors de l'appel de la méthode show ().
+1 Voici une relative example. c'est ok. c'est une fonctionnalité que nous devrions demander à balancer de l'équipe? le fait que dans java 7, ils ont publié un nouveau composant pour le swing (la JLayer) suggère que l'oracle garderont au moins swing, de l'entretien. alors pourquoi ne pas ajouter des fonctionnalités utiles comme celui-ci?
Le CardLayout ne vous permet pas de le faire. Toutefois, vous devriez être en mesure d'accéder au panneau supérieur de la CardLayout.
Donc un peu de travail autour est de donner à chaque panneau un nom, égal à l'identifiant de chaîne. De cette façon, vous pouvez obtenir la carte du haut, et obtenir son nom. C'est comment vous le faites:
finalString CARD1 ="Card 1";finalString CARD2 ="Card 2";JPanel panel =newJPanel(newCardLayout());JPanel card1 =newJPanel();
card1.setName(CARD1);JPanel card2 =newJPanel();
card2.setName(CARD2);
panel.add(card1);
panel.add(card2);//now we want to get the String identifier of the top card:JPanel card =null;for(Component comp : panel.getComponents()){if(comp.isVisible()==true){
card =(JPanel) comp;}}System.out.println(card.getName());
La notion de recherche de haut niveau Composite pour les composants visibles (espérons-le, une seule est visible) est la partie importante. Si les panneaux ont des noms ou pas est secondaire. Une fois que j'ai une poignée pour le courant de panneau de carte, je peux faire toutes sortes de choses utiles
Le CardLayout ne sais pas ce que le panneau sélectionné actuellement est.
Vous devez garder cela en mémoire vous-même, lors de l'appel de la méthode show ().
c'est ok. c'est une fonctionnalité que nous devrions demander à balancer de l'équipe? le fait que dans java 7, ils ont publié un nouveau composant pour le swing (la JLayer) suggère que l'oracle garderont au moins swing, de l'entretien. alors pourquoi ne pas ajouter des fonctionnalités utiles comme celui-ci?
OriginalL'auteur Fortega
Le CardLayout ne vous permet pas de le faire. Toutefois, vous devriez être en mesure d'accéder au panneau supérieur de la CardLayout.
Donc un peu de travail autour est de donner à chaque panneau un nom, égal à l'identifiant de chaîne. De cette façon, vous pouvez obtenir la carte du haut, et obtenir son nom. C'est comment vous le faites:
OriginalL'auteur Pieter-Jan Van Robays