est-il possible d'obtenir le nom du panneau qu'un jlabel est ajouté? J'ai ajouté des jlabels à différents jpanels et je veux appeler des événements de souris différents selon quel panneau sont placés sur les Jlabels. P>
3 Réponses :
Si vous exécutez Vous pouvez alors appeler label.geparent () code> Il retournera le panneau que l'étiquette est à l'intérieur. P>
parent.getname () code> mais le fait que vous aurez maintenant l'objet que vous n'ayez peut-être pas besoin de cela maintenant. P>
Le moyen le plus simple de le faire:
public void doActionsForLabel(JLabel label)
{
boolean flag = true;
Component parent = label;
while (flag)
{
parent = parent.getParent();
if ((parent != null) && (parent instanceof JPanel))
{
if (label.getParent() == panel1)
{
//do action #1
}
else if (label.getParent() == panel2)
{
//do action #2
}
}
else
{
flag = false;
}
}
}
Si vous ne savez pas à quel point votre étiquette est au fond de la hiérarchie, il existe des fonctions utiles dans Une alternative à la vérification du nom du conteneur parent de vos étiquettes pourrait simplement transmettre l'événement au conteneur parent et laissez le parent faire le travail. Selon ce que vous essayez de réaliser, il pourrait être utile de découpler les étiquettes des parents. Les événements de transmission peuvent être effectués en utilisant oscillants code>, par exemple: oscillabilité.getanCestorofclass (classe, composant ) code> p>
composant. ProcurentEvent (AWTEvent) CODE>. P>
Et Conteneur Static Public GetCetornommé (nom de chaîne, composant Comp) code>, si nous connaissons le nom. Merci!