Question

Je vais avoir du mal à comprendre celui-ci dehors.

La situation est pas difficile d'imaginer si j'espère pouvoir poster ceci sans un exemple de code. Je JPanel avec CardLayout. Le panneau contient plusieurs autres panneaux individuels sous forme d'onglets. Ce que je suis en train de ACHIVE est de créer un JButton qui fera le spectacle principal du panneau de dernier onglet ouvert (celui avant que le courant a été montré). Pas grand-chose je pensais au début.

Alors j'ai commencé par penser comment obtenir l'onglet visible en cours (panneau) et a découvert qu'il n'y a pas de méthode native que dans le panneau ou plutôt CardLayout qui ne contient que des méthodes d'abord (), dernière (), à côté () et précédente () qui ne servent à rien pour moi.

Alors je pensais que peut-être ACHIVE mon but je pourrais passer par tous les composants du panneau principal et un test dont l'un est visible, ce qui serait l'actuel. Je trouve un peu compliqué, très bien, mais comment puis-je faire de ce spectacle panneau par CardLayout si je ne dispose pas de son nom de la carte à appeler la méthode CardLayout show (parent, nom)?

À ce stade, je ne sais pas. J'ai cherché sur Internet, mais ne l'ai pas trouvé une solution, seulement que peu de gens ont essayé de trouver quelque chose semblable. J'espère donc que quelqu'un qui déjà delt avec ce genre de question vient sur ce sujet: -)

Merci pour toutes suggestions.

Cordialement

Martin S.

Était-ce utile?

La solution

Ceci nous amène à la question de savoir comment vous êtes arrivé à la carte actuelle, en premier lieu. Si vous avez utilisé next() pour se rendre à la carte actuelle, puis previous() vous rendre à la carte précédente et vice versa. Si vous utilisez first() ou last(), alors vous êtes hors de la chance.

Bien sûr, vous pouvez toujours reproduire certaines des informations stockées par le CardLayout pour atteindre votre objectif: si vous maintenez un tableau de noms de composants (et mettre à jour chaque fois que vous appelez addLayoutComponent) ainsi qu'un index précédent (et mettre à jour cette avec next, previous et d'autres appels), vous pouvez simplement rechercher le nom du composant précédent et l'utilisation show pour montrer la carte précédente.


Mise à jour: Puisque vous connaissez le nom de l'onglet, voici comment vous pouvez conserver le nom de l'onglet précédent:

String prevTab, curTab;

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

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

Autres conseils

Vous pouvez créer une carte d'objet carte. Et ajouter des panneaux et des noms à la disposition de la carte et à la carte. Par la suite, si vous avez le JPanel, vous obtenez son nom de carte indiqué précédemment par map.get (JPanel p). Et pour trouver ce que JPanel était visible avant le moment, vous aurez besoin d'ajouter ComponentListener à chaque JPanel. Et faire pour changer une variable statique événement componentHidden (par exemple statique JPanel prev_shown).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top