Sim / Não diálogo em Java ME

votos
5

Eu estou procurando uma solução simples para um sim / não de diálogo para usar em um midlet Java ME. Eu gostaria de usá-lo como este, mas outros caminhos são ok.

if (YesNoDialog.ask(Are you sure?) == true) {
  // yes was chosen
} else {
  // no was chosen
}
Publicado 11/09/2008 em 16:43
fonte usuário
Em outras línguas...                            


2 respostas

votos
7

Você precisa de um alerta :

Um alerta é uma tela que mostra os dados para o usuário e aguarda um determinado período de tempo antes de prosseguir para o próximo Displayable. Um alerta pode conter uma cadeia de texto e uma imagem. O uso pretendido de alerta é para informar o usuário sobre erros e outras condições excepcionais.

Com 2 comandos ( "Yes" / "Não" no seu caso):

Se houver dois ou mais comandos presentes no alerta, ele é automaticamente transformado em um Alerta modal, eo valor de tempo limite é sempre SEMPRE. O alerta permanece no visor até que um comando é chamado.

Estes são incorporados em classes de suporte em MIDP 1,0 e mais elevado. Também o seu trecho de código nunca vai funcionar. Tal API seria necessário para bloquear o segmento de chamada esperando que o usuário para selecionar e resposta. Isso vai exatamente na direção oposta do modelo de interação UI de MIDP, que é baseado em retornos de chamada e delegação. Você precisa fornecer sua própria classe, a implementação CommandListener , e preparar o seu código para execução assíncrona.

Aqui é um (não testado!) Exemplo de classe baseado em alerta:

public class MyPrompter implements CommandListener {

    private Alert yesNoAlert;

    private Command softKey1;
    private Command softKey2;

    private boolean status;

    public MyPrompter() {
        yesNoAlert = new Alert("Attention");
        yesNoAlert.setString("Are you sure?");
        softKey1 = new Command("No", Command.BACK, 1);
        softKey2 = new Command("Yes", Command.OK, 1);
        yesNoAlert.addCommand(softKey1);
        yesNoAlert.addCommand(softKey2);
        yesNoAlert.setCommandListener(this);
        status = false;
    }

    public Displayable getDisplayable() {
        return yesNoAlert;
    }

    public boolean getStatus() {
        return status;
    }

    public void commandAction(Command c, Displayable d) {
        status = c.getCommandType() == Command.OK;
        // maybe do other stuff here. remember this is asynchronous
    }

};

Para usá-lo (novamente, não testada e em cima da minha cabeça):

MyPrompter prompt = new MyPrompter();
Display.getDisplay(YOUR_MIDLET_INSTANCE).setCurrent(prompt.getDisplayable());

Este código fará com que o prompt de forma exibida atual em sua aplicação, mas não irá bloquear seu segmento como no exemplo que você postou. Você precisa continuar correndo e esperar por uma invocação commandAction.

Respondeu 15/09/2008 em 14:51
fonte usuário

votos
-2

Eu não tenho programado em Java ME, mas eu achei nele de referência para pacotes opcionais os gráficos avançados e User Interface API , e é usado como a API Java SE para criar estes diálogos com a classe JOptionPane

int JOptionPane.showConfirmDialog (java.awt.Component parentComponent, java.lang.Object> mensagem, título java.lang.String, int optionType)

Retorno poderia ser JOptionPane.YES_OPTION, JOptionPane.NO_OPTION, JOptionPane.CANCEL_OPTION ...

Respondeu 11/09/2008 em 16:56
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more