Самый простой способ сделать это:
//label1 and label2 are JLabel's
//panel1 and panel2 are JPanel's
doActionsForLabel(label1);
doActionsForLabel(label2);
public void doActionsForLabel(JLabel label)
{
if (label.getParent() == panel1)
{
//do action #1
}
else if (label.getParent() == panel2)
{
//do action #2
}
}
Приведенный выше код предполагает, что метки являются прямыми дочерними элементами JPanels. Однако, это не всегда так, иногда они правнуки или правнуки группы. Если это так, вам придется выполнить несколько более сложных операций, чтобы пройти родительскую иерархию.
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;
}
}
}
Как предложил Гордон, если вы не хотите проверять равенство компонентов, вы можете проверить равенство свойств компонентов:
Вместо label.getParent() == panel1
, сделайте это или подобное вместо: label.getParent().getName().equals("panel_1_name")
.