2016-04-12 15 views
0

Programda bir TextFrame'i izlemek için actionListener kullanmak istiyorum. Monitör adında bir sınıf oluşturdum ve tüm TextFieldFrame, TFFrame'i çağırmaya çalışan bir kurucu var.addActionListener tartışması hatalı

class Monitor implements ActionListener{ 

TFFrame tf = null; 

public void Monitor(TFFrame tf){ 
    this.tf = tf; 
} 

TFFrame sınıfında, kendisini çağıran bir actionListener ekliyorum.

class TFFrame extends Frame{ 
TextField num1, num2, num3; 
public void launchFrame(){ 
    num1 = new TextField(10); 
    num2 = new TextField(10); 
    num3 = new TextField(20); 

    Label plus = new Label("+"); 
    Button equal = new Button("="); 

    equal.addActionListener(new Monitor(this)); 

Ancak derleyici hatadır ve hata monitörde yanlıştır. Sorun nedir?

cevap

0

ActionListener bir arayüz ve tek gerekli yöntemi vardır: Aslında burada bu yöntemi uygulayan etmek Sen görünmüyor

actionPerformed(ActionEvent e) 

. Normal olarak uygun bir olay meydana geldiğinde başlık altında denir.

Olayları ve dinleyicileri doğru şekilde kullanmıyor olabilirsiniz. Çerçeve bu olayların kendi ayarlanmıştır sahip olduğunu

TFFrame tf = new TFFrame(); 

tf.addActionListener(new Monitor()); 

bir problem olduğunu ve düğmeleri tıklayarak veya odaklama olayları iletişim olmaz: Mantıken senin örnek koddan anladığımız verilen, konuşma, böyle bir şey olurdu metin üzerinde çerçeveden dinleyiciye kadar uzar. Çerçevenin olayları, Monitörde sahip olmanız gereken actionPerformed yöntemini çağıran şeydir.

Özel dinleyicinize başka şeyler de ekleyebilirsiniz, ancak dinleyici genellikle dinlediği bir öğeye bir başvuru içermiyor. Belki de gerçekten istediğin şey, sadece eşittir düğmesine basıldığında kontrol etmek için bir eylemlisteydi, bu durumda böyle bir şey olurdu. düğmeleri için dinleyici çeşit düğmeye eşittir için

TFFrame tf = new TFFrame(); 

tf.launchFrame(); 

launchFrame yönteminin İçinde bir eylem dinleyicisi eklersiniz.

equals.addActionListener(new ButtonListener()); 

İşte buna eylem dinleyicisi uygulayan bir sınıf olarak adlandırılan düğme dinleyici oluşturmak olurdu çalışmak ve o zaman yöntem actionPerformed oluyor iç işleme kodunu uygun olay yazmak için.

P.S. Tamamen dürüst olmak gerekirse, bu çıkarımın çoğu. İstediğin şey hakkında yanılıyorsam, git ve şunu okumanı tavsiye ederim: https://docs.oracle.com/javase/tutorial/uiswing/events/actionlistener.html