In che modo è possibile riattivare l'evento su una JLabel quando si modifica il testo all'interno ??JLabel sull'evento di modifica del testo
Ho una JLabel e quando cambio il testo all'interno devo aggiornare altro campo.
In che modo è possibile riattivare l'evento su una JLabel quando si modifica il testo all'interno ??JLabel sull'evento di modifica del testo
Ho una JLabel e quando cambio il testo all'interno devo aggiornare altro campo.
IMHO non è possibile ottenere un evento su JLabels textchange. Ma è possibile utilizzare un JTextField invece di un 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");
}
});
Nota: questo evento viene generato non importa quanto il testo viene cambiato; programmaticamente tramite "setText()" sul TextField o (se non si "setEditable (false)") tramite appunti taglia/incolla, o dall'utente che digita direttamente nel campo sull'interfaccia utente.
Le linee:
textFieldLabel.setEditable(false);
textFieldLabel.setOpaque(true);
textFieldLabel.setBorder(null);
sono usati per fare il JTextField sembrare un JLabel.
questa risposta è errata (la parte relativa agli ascoltatori disponibili per JLabel) – kleopatra
techically, la risposta è quella di utilizzare un PropertyChangeListener e ascoltare cambiamenti del "testo" di proprietà, qualcosa come
PropertyChangeListener l = new PropertyChangeListener() {
public void propertyChanged(PropertyChangeEvent e) {
// do stuff here
}
};
label.addPropertyChangeListener("text", l);
non
quindi tecnicamente: potrebbe essere la pena di ri-visitare il disegno complessivo e legarsi a fonte originale che ha attivato la modifica dell'etichetta
Sarebbe meglio aggiornare entrambi i campi contemporaneamente, da qualunque evento ha causato il primo cambiamento? –
Inserisco un testo in jlabel1 con un clic su un pulsante e in base a ciò che ho scelto devo inserire un altro testo in jLabel2 – Giovanni