我有JLabel
一个MouseListener
label.addMouseListener( new ClickController() );
要执行的操作在哪里
class ClickController{
...
public void mouseClicked(MouseEvent me) {
// retrieve Label object
}
有什么方法可以将对象与 JLabel 关联,以便我可以从 mouseClicked 方法中访问它?
编辑:
举一个更说明性的例子,我在这里尝试将 JLabels 设置为扑克牌的图形表示。标签旨在表示具有所有实际数据的对象卡。所以我想将该 Card 对象与 JLabel 相关联。
解决方案:
正如“满载鳗鱼的气垫船”所暗示的那样,me.getSource()
这是要走的路。在我的特殊情况下是:
Card card = new Card();
label.putClientProperty("anythingiwant", card);
label.addMouseListener( new ClickController() );
并从侦听器获取 Card 对象:
public void mouseClicked(MouseEvent me) {
JLabel label = (JLabel) me.getSource();
Card card = (Card) label.getClientProperty("anythingiwant");
// do anything with card
}