2012-07-25 21 views
5

LWUIT bir Düğmenin, bir Komut yapmıyorken neden kendi ActionListener'ına (button.addActionListener) sahip olabileceğinin bir sebebi var mı?Düğmelerin neden LWUIT içinde eylem dinleyicileri ve komutları yok?

belirli bir komutla ilgili bir dinleyici sağlamanın tek yolu var mı etkinliklerin aşağıda gibi geldi komut hangi dinleyicisi bir forma bir ActionListener ekleyip kontrol etmektir? LWUIT yazanlar bu kararı ama mantıklı çeşitli nedenleri vardır neden

public void startApp() { 
    Display.init(this); 
    f = new Form("Mixed Record"); 
    exit = new Command("Exit"); 
    start = new Command("Start"); 
    Button button = new Button("Button"); 

    f.addCommand(exit); 
    f.addCommand(start); 
    f.addCommand(delete); 
    f.addComponent(button); 

    f.addCommandListener(new ActionListener() { 

     public void actionPerformed(ActionEvent ae) { 
      if (ae.getCommand().equals(exit)) { 
       //Do Exit command code 
      } else if (ae.getCommand().equals(start)) { 
       //Do Start command code 
      } 
     } 
    }); 

    button.addActionListener(new ActionListener() { 

     public void actionPerformed(ActionEvent ae) { 
      //Do button code 
     } 
    }); 

    f.show(); 
} 

cevap

6

Eh, ben tam olarak söyleyemem.

Form birkaç Komutları içeren

, bir menüde toplanmıştır. Kullanıcı genişlediğinde her seferinde menüyü çöker, en fazla bir Komut yürütülür. Bu nedenle, Komutlar Düğmelerden başka biriyle bağlantılıdır, özellikle de Düğme alt sınıflarını bir Formdan diğerine yeniden kullanmak nadir değildir.

da LWUIT Formunun API çok MIDP şartnamede LCDUI Formu benziyor yapma konusunda bir endişe olmuş olabilir. Zaten kodda 2 isimsiz iç sınıfları (ActionListener alt sınıfları) sahip

:

Ben de senin kod kararın bir olumlu sonucu gösteriyor ki gibi. Her bir Komuta kendi ActionListener'ına sahip olsaydı, muhtemelen 3 adsız iç sınıf yazdınız. Geliştiriciler, çok sayıda adsız iç sınıf içeren kod yığınlarının yığın izlerini incelerken biraz daha fazla zaman harcadığınızda, her bir sınıfta birden fazlasına sahip olmanın kötü bir uygulama olduğunu fark edeceksiniz.

+0

Görüyorum. Şimdi mantıklı… (sadece can sıkıcı olmak yerine). Detaylı cevap için teşekkür ederiz! –

+1

Komut bir eylem dinleyicisidir (alt sınıfı yazabilir ve kodu ActionPerformed yöntemine yazabilirsiniz. Böylece bir eylem dinleyicisine bir eylem dinleyicisine biraz kafa karıştırıcı bir benzetme eklenmiştir. Bu yüzden yapmadık (orijinal ortak yazar) LWUIT’in –

İlgili konular