2016-03-23 21 views
0

Programımda KeyListener kullanmayı deniyorum. Benim ana sınıfa bu sınıfı ekledi: benim ana sınıfında yerde addKeyListener(new CustomKeyListener()) yöntemi eklemek mümkün değilim AncakNeden bir anahtar dinleyicisi ekleyemiyorum?

class CustomKeyListener implements KeyListener{ 
    @Override 
    public void keyTyped(KeyEvent k) {} 
    @Override 
    public void keyPressed(KeyEvent k) {} 
    @Override 
    public void keyReleased(KeyEvent k) {}  
} 

. Neyi eksik?

Benim önceki question dayanarak sadece bir grafik arayüzü ile çalışacağını anlıyorum.Sadece biraz rasgele form ekleyebilir miyim ve işe yarayacak?

Bu soruna kim ışık tutabilir?

+1

KeyListener'ı ne eklemeye çalışıyorsunuz? – apicellaj

+1

“bazı tahkim formu” bana uygun gelmiyor. Bu şekilde devam etmek isterseniz, kullanıcının görmesini ve kullanmasını istediğiniz grafik kullanıcı arayüzünü oluşturmanız gerekir. –

+0

@ OleV.V. Ben tek kullanıcıyım. tek istediğim bu anahtar listesini eklemek, böylece bazı döngü işlemlerini durdurmak için herhangi bir tuşa basma işlemini yakalayabileceğim. bu kadar. –

cevap

0

Ana sınıfınız, kullanmaya çalıştığınız yöntemi gerçekten destekleyen bir sınıfı uyguluyor/uzatıyor mu?

Ana sınıfınızın ne olduğu ve neyi başarmak istediğinizle ilgili içerik. Belki bunun yerine ihtiyacınız olan bir tarayıcı mı? Öyleyse, nasıl kullanılacağını öğrenmek için buraya bir göz atın. http://www.tutorialspoint.com/java/util/java_util_scanner.htm

Ayrıca bu muhtemelen de yardımcı olabilir: Java using scanner enter key pressed

+0

Ben zaten 'Tarayıcı' yöntemini denedim, benim için çalışmadı. ana sınıfıma 'Implement KeyListener'as ekleyeyim mi? Neredeyse –

0

Sınıfınız addKeyListener yöntemine sahip olmalıdır. Sınıfınız Bileşen veya JComponent'ten türetilmişse bu durum geçerlidir. Yani böyle bu sınıflardan birinden sınıf türetmek gerekir: miras direkt olmak zorunda olmadığını

class MyClass extends JComponent 

Not; Eğer sınıfınız bir JFrame'den türetilmişse, dolaylı olarak addKeyListener yöntemini miras alır, çünkü JFrame'in kendisi Bileşen'den türetilmiştir. Ayrıca, this question cevabında da belirtildiği gibi, sınıfınız, Anahtar Dinleyicinin çalışabilmesi için odaklanabilir olmalıdır.

hatayı

statik bir şekilde bu kullanamazsınız

this.addKeyListener(new CustomKeyListener()); 

kullanmaya çalışıyor ve var edilmiştir Açıklamalarla yazdı

Güncelleme

Bu çağrı yapmak, çağrıyı statik bir yöntemden yapıyordu (bu durumda main yöntemi).
this, sınıfın geçerli örneğini belirtir. Statik bir yöntemde, örnek yoktur - bu pratik olarak statik bir yöntemin tanımıdır.

newInstance.addKeyListener(new CustomKeyListener()); 

Ayrıca bir örneği de yapabilirsiniz: Eğer o örneğe anahtarı dinleyici ekleyebilir, Şimdi

MyClass newInstance = new MyClass(); 

:

yapmanız gerekenler, bir örneğini oluşturmaktır yöntemi (static anahtar sözcüğüne sahip olmayan herhangi bir yöntem) ve bu yöntemi örneğinizden çağırın.

Resmi Java Eğiticileri bu konuda biraz daha explanation var.

+0

. 'MyClass tipinin kapalı örneğine erişilemez. Ayrımı, MyClass türünde (örneğin x.new A() x'in bir MyClass örneğidir) kapalı örneğini kullanarak nitelendirmeliyiz. ”Söylediğiniz her şeyi yaptım, şimdi bu hatayı alıyorum.MyClass benim ana sınıfım –

+0

Şimdilik, ana sınıfın dışında 'CustomKeyListener' olması en kolay olanıdır. Biraz daha tecrübeli olduğunuzda, iç sınıflar hakkında bilgi edinin. Ya da hata iletisinin önerdiği gibi yapın: 'addKeyListener (MyClass.new CustomKeyListener())'. –

+1

tamam teşekkür ederim. Hasta bunun üzerinde çalışmaya devam ediyor. –

İlgili konular