JLabel点击事件

时间:2011-02-04 02:55:22

标签: java swing

如果JLabel中有两个JFrame,并且添加了相同的MouseListener点击事件,那么如何在不创建“JLabel”的情况下告知哪个{{1}}被点击第二个动作者?

注意:两个标签上都写有相同的文字,因此不能用来区分它们。

4 个答案:

答案 0 :(得分:5)

这将为您提供对组件的引用...

public void mousePressed(MouseEvent e) 
{
JComponent reference = e.getComponent();
}

有关更完整的说明,请查看Swing Tutorial on MouseListeners

答案 1 :(得分:4)

只需输入两个JLabel字段,然后检查MouseEvent的来源:

if (e.getSource() == firstLabel) {
  ...
} else if (e.getSource() == secondLabel) {
  ...
}

答案 2 :(得分:0)

以键盘为例。当我创建一个时,我做了什么,通过按钮发送给动作监听器。然后我让动作监听器做了一个myButton.getText();我只需在屏幕上输入文字(在我的情况下是一个JTextfield)。在你的主要方法中写:

JTextField textfield = new JTextField("", 37);  
JButton myButton = new new JButton("button text here");  
myButton.addActionListener(new MyActionListener (textfield, myButton));

完整的动作监听器看起来像这样:

//thisMethod is for a keyboard typing into a JTextfield  
import javax.swing.JTextField;  
import java.awt.event.ActionListener;  
import java.awt.event.ActionEvent;  
import java.lang.*;    
class MyActionListener implements ActionListener {  
JTextField textfield;  
MyActionListener(JTextField textfield, JButton button) {  
    this.textfield = textfield;  
}  
public void actionPerformed(ActionEvent e) {  
        String letter = javax.xml.bind.DatatypeConverter.printString(textfield.getText()).concat(button.getText());
        textfield.setText (letter);  
    }  
 }

在引用按下哪个按钮时适用相同的原则。你可以通过一个字符串发送,并且该字符串可以在条件语句中用来确定按下了哪个按钮。

答案 3 :(得分:0)

由于您使用的是来自JComponent的JLabel,因此它有一个名为putClientProperty(“myValue”,myValue)的方法。您可以在创建JLabel时在其中放置一些唯一标识符,并在事件时使用getClientProperty(“myValue”)检索它,然后对其进行测试。