ИМХО вы не можете получить событие по обмену текстами JLabels. Но вы можете использовать JTextField вместо JLabel:
private JTextField textFieldLabel = new JTextField();
textFieldLabel.setEditable(false);
textFieldLabel.setOpaque(true);
textFieldLabel.setBorder(null);
textFieldLabel.getDocument().addDocumentListener(new DocumentListener() {
public void removeUpdate(DocumentEvent e) {
System.out.println("removeUpdate");
}
public void insertUpdate(DocumentEvent e) {
System.out.println("insertUpdate");
}
public void changedUpdate(DocumentEvent e) {
System.out.println("changedUpdate");
}
});
Примечание: это событие вызывается независимо от того, как изменяется текст; программно через "setText ()" в TextField или (если вы не "setEditable (false)") через вырезать / вставить буфер обмена, или пользователем, вводящим непосредственно в поле в пользовательском интерфейсе.
Строки:
textFieldLabel.setEditable(false);
textFieldLabel.setOpaque(true);
textFieldLabel.setBorder(null);
используются для того, чтобы JTextField выглядел как JLabel.