Algumas perguntas

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

public class HelloMidlet extends MIDlet implements CommandListener {

   Display tela;   
   Ticker ticker;
   TextBox texto;
   Command comandoSair;
   
   public HelloMidlet() {
   }   
    
   public void startApp() {
      this.tela =  Display.getDisplay(this);
      this.ticker = new Ticker("Texto deslizante ..."); 
      this.comandoSair = new Command("Sair", Command.EXIT, 0); 
      this.texto = new TextBox("Hello MIDlet", "J2ME", 20, TextField.ANY);
      this.texto.setTicker(ticker);
      this.tela.setCurrent(this.texto);
      this.texto.setCommandListener(this);
   }

   public void pauseApp() {
   }
   
   public void destroyApp(boolean b) {
   }
   
   public void commandAction(Command c, Displayable d) {
      if(c == comandoSair) {
         this.destroyApp(true);   // Chamar garbage colector.
         this.notifyDestroyed();   // Notificar destruição para a máquina virtual.
      }
   }

1 - Por quê sou obrigado a setar um command para um objeto?
>> this.texto.setCommandListener(this);
2 - No celular, não aparece a opção SAIR. O que está errado no código, já que foi criado um command para sair?
4 - É possível associar um ticker diretamente a um display?
3 - A emulação no NetBeans não mostra nada do programa, somente no celular. Porque?

Até a próxima!

Respostas:
1 - Isso é lembra o pattern Observer vc pede para o Form notificar um comando para objeto passado que no caso é sua propria classe de modo que se vc quisesse vc poderia por os controles de Command em uma outra classe.
2 - Não está aparecendo porque vc não adicionou seu command no form

this.texto.addCommand(this.comandoSair);

4 - Ticker só pode ser associado a classes que herdem de Screen por exemplo Form,List,Textbox
3 - Não sei