如果JLabel
中有两个JFrame
,并且添加了相同的MouseListener
点击事件,那么如何在不创建“JLabel
”的情况下告知哪个{{1}}被点击第二个动作者?
注意:两个标签上都写有相同的文字,因此不能用来区分它们。
答案 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”)检索它,然后对其进行测试。