2012-03-09 83 views

回答

2

您使用的getSource得到refrence对象被点击:

label1.addActionListener(new yourListener()); 
label2.addActionListener(new yourListener()); 

public class yourListener extends MouseAdapter{ 
    public void mouseClicked(MouseEvent e){ 
     JLabel labelReference=(JLabel)e.getSource(); 
      labelReference.someMethod(); 
    } 
} 
+0

你是否得到这个工作? :) – 2012-03-12 13:57:02

2

我不喜欢的东西,这是,使用Jbutton将,让他们通过使用此语法看起来像的JLabel的最简单方法格式。

jButton.setBorder(BorderFactory.createEmptyBorder(2, 2, 2, 2)); 
jButton.setBorderPainted(false); 
jButton.setContentAreaFilled(false); 
jButton.setFocusPainted(false); 
jButton.setHorizontalAlignment(SwingConstants.LEFT); 

然后,你想要的是添加一个ActionLister和一个ActionCommand。例如,

jButton.addActionListener(this); 
jButton.setActionCommand("label1"); 

然后只处理actionListners做你想要的每个标签。

public void actionPerformed(ActionEvent arg0) 
{ 
    String command = arg0.getActionCommand(); 
    if(command.equalsIgnoreCase("label1")) 
    { 
     //label1 code 
    } 
} 

如下所述,这还具有支持键盘和鼠标活动的附加好处。

+0

+1好一个!按钮将对鼠标点击和键盘活动做出反应。 :) – 2012-03-09 15:21:37

1

我把这个在一起,根据您的描述:

public static void main(String[] args) { 
    JFrame f = new JFrame(); 
    f.setLayout(new FlowLayout()); 
    for (int i = 0; i < 6; i++) { 
     JLabel l = new JLabel("Label " + (i + 1)); 
     l.addMouseListener(new MouseAdapter() { 
      @Override 
      public void mouseClicked(MouseEvent e) { 
       JLabel l = (JLabel) e.getSource(); // here 
       System.out.println(l.getText()); 
      } 

     }); 
     f.add(l); 
    } 
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    f.pack(); 
    f.setLocationRelativeTo(null); 
    f.setVisible(true); 
} 

我觉得行标// here是你需要什么大多。