我有一个扩展了JPanel的类:
public class ButtonPanel extends JPanel {
private label;
public ButtonPanel() {
label=new JLabel("waiting for click");
add(label);
}
public void setButtonText() {
label.setText("just clicked");
}
}
我有几个该类的实例,它们被添加到了JFrame上。我想创建一个MouseAdapter类的实例,并将其作为鼠标监听器添加到我JFrame上所有ButtonPanel组件中。我的意思是:
ButtonPanel butt1 = new ButtonPanel();
ButtonPanel butt2 = new ButtonPanel();
ButtonPanel butt3 = new ButtonPanel();
//... here goes code which add ButtonPanels to JFrame
MouseAdapterMod mam = new MouseAdapterMod();
butt1.addMouseListener(mam);
butt2.addMouseListener(mam);
butt3.addMouseListener(mam);
我希望将MouseAdapterMod类单独放在一个包中,与其他内容分开。它应该像这样:
public class MouseAdapterMod extends MouseAdapter {
public void mouseClicked(MouseEvent e) {
//here goes the code of calling setButtonText method of ButtonPanel component on which the event had occurred
}
}
问题在于我不知道如何实现mouseClicked方法,以确定哪个ButtonPanel生成了事件并调用相应的组件setButtonText()方法。有人知道怎么做吗?
我知道可以通过在ButtonPanel类中包含事件处理功能来实现这一点,但对我来说并不合适,因为我希望保持上述描述的类结构,并仅有一个MouseAdapterMod类的实例来处理所有的ButtonPanels。