2010-10-15 27 views
9

İçerideki metni değiştirirken olayı JLabel'de nasıl geri alabilirim ??JLabel üzerinde değişiklik metni olayı

JLabel'im var ve içindeki metni değiştirdiğimde diğer alanı güncellemem gerekiyor.

+1

Etiketindeki değişikliği tetikleyen orijinal kaynak Her iki alanı aynı anda güncellemek daha iyi olabilir mi? –

+0

Bir düğmeye basarak jlabel1 bir metin koydum ve ne seçtiğime bağlı olarak başka bir metin koymak zorundayım i jLabel2 – Giovanni

cevap

2

IMHO, JLabels textchange üzerinde bir etkinlik alamıyor. Ama bunun yerine JLabel bir JTextField kullanabilirsiniz:

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

Not: bu olay olursa olsun metin değişmiş olur nasıl ateşlenir; TextField üzerinde "setText()" ile veya panoya kesme/yapıştırma yoluyla veya "kullanıcı arabirimindeki alana doğrudan yazarak" setEditable (false) "yapmazsanız programatik olarak programlanabilir.

hatları:

textFieldLabel.setEditable(false); 
textFieldLabel.setOpaque(true); 
textFieldLabel.setBorder(null); 

JTextField bir JLabel gibi görünmesi için kullanılır. bu yüzden teknik

PropertyChangeListener l = new PropertyChangeListener() { 
     public void propertyChanged(PropertyChangeEvent e) { 
      // do stuff here 
     } 
}; 
label.addPropertyChangeListener("text", l); 

değil

gibi

+0

bu cevap yanlış (JLabel için kullanılabilir dinleyicilerle ilgili bölüm) – kleopatra

10

techically, cevap PropertyChangeListener kullanabilir ve "metin" değişikliklere dinlemektir mülkiyet şey: genel tasarımı yeniden ziyaret etmek ve bağlamak için değer olabilir