2016-03-24 19 views
1

Bir sınıfım var FocusListener, sınıfın içinde çok fazla JTextField var, hepsinin odağı kazandığında hepsini seçmesini istiyorum. Ben bileşene sonra selectAll() için fe dönüştürmek için denemekJTextField, odağı kazandığında tüm içeriği seç

@Override 
public void focusGained(FocusEvent fe) 
{ 
    JTextField txt = (JTextField)fe.getComponent(); 
    txt.selectAll(); 
} 

, ama eser yok değil: Bu benim focusGained() fonksiyonudur. Bunun hakkında bir fikrin var mı?

+0

txt.selectAll(); invokeLater içine sarılmalıdır - EDT sonuna taşındı, nedeni Odak asenkron, önemli gecikme ile çünkü – mKorbel

cevap

2

Sen Ben bugün kontrol ederdim getSource()

((JTextField)fe.getSource()).selectAll(); 

kullanmak gerekir instanceoffe.getSource()

@Override 
public void focusGained(FocusEvent fe) { 
    if (!(fe.getSource() instanceof JTextField)) return; 
    JTextField txt = (JTextField)fe.getSource(); 
    txt.selectAll(); 
} 
0

Kodunuz çalışması gerekir, bu yüzden dinleyici JTextField de kayıtlı değil varsayalım . Yapmalısın. bunun gibi (addFocusListener yöntemini bildirin):