JLabel click event - PullRequest
       4

JLabel click event

3 голосов
/ 04 февраля 2011

Если у вас есть два JLabel с JFrame, к которым добавлено одно и то же событие клика MouseListener, как вы можете определить, на какой JLabel был кликнут, не создавая второй список действий?

Примечание: на обоих ярлыках написан один и тот же текст, поэтому их нельзя использовать для их разделения.

Ответы [ 4 ]

5 голосов
/ 04 февраля 2011

Это даст вам ссылку на компонент ...

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

Для более полного описания смотрите Учебник по Swing на MouseListeners

4 голосов
/ 04 февраля 2011

Просто заполните два поля JLabel s и проверьте источник MouseEvent:

if (e.getSource() == firstLabel) {
  ...
} else if (e.getSource() == secondLabel) {
  ...
}
0 голосов
/ 09 октября 2013

Поскольку вы используете JLabel из JComponent, у него есть метод putClientProperty ("myValue", myValue).Вы можете добавить туда уникальный идентификатор при создании JLabel и получить его во время события с помощью getClientProperty ("myValue"), а затем протестировать его.

0 голосов
/ 04 февраля 2011

возьмите, к примеру, клавиатуру.то, что я сделал, когда создал его, передается через кнопку слушателю действия.Затем я заставил слушателя действия выполнить myButton.getText ();и я просто набрал бы текст на моем экране (поле JText в моем случае).в вашем основном методе напишите:

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);  
    }  
 }

тот же принцип применяется при ссылке на какую кнопку была нажата.Вы можете отправить строку, и эту строку можно использовать в условных выражениях, чтобы определить, какая кнопка была нажата.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...