ho sviluppato una piccola applicazione j2me,
sto cercando di abbellirla con un minimo di interfaccia utente, ma ottengo risultati stravaganti.
Attualmente la mia applicazione ha un Istanza MIDlet principale chiamata Safer, ho poi aggiunto
una classe chiamata Pager che dovrebbe gestirmi la "GUI"
l'interfaccia dovrebbe essere composta di due pagine:
MainPage: con tre campi di testo e un comando "menu"
ConfPage: con tre campi editabili e due comandi "esci" e "OK"
Mentre la mia applicazione gira dovrebbe essere visibile la pagina MainPage, e al premere "menu" dovrei ottenere una lista di opzioni (in una terva pagina come ipotizzato all'inizio): configura, spegni, esci
al premere "esci" dovrei tornare alla MainPage, con "spegni" dovrei ammazzare l'app, e con configura
dovrei visualizzare la ConfPage, in cui poter cambiare i miei parametri, con i due comandi in fondo che sono autoesplicativi.
Quello che ottengo però non è questo ma bensì:
La MainPage si visualizza bene con il comando menu in basso a destra.
Premo il bottone Menu, e non succede niente.
Ripremo e mi appare la lista di opzioni: menu, configura, esci, spegni
la scelta mi porta dove voglio (tranne "menu", che non dovrebbe esserci, che mi riporta a MainPage)
se finisco su ConfPage in basso ho solo il comando "menu", ma non ci sono "esci" e "ok". se premo menù ottengo la lista di scelte di prima con in più "OK", che da quel momento non se ne va più dalla lista.
Come diavolo devo fare per fare le cose nel modo giusto?
ho cercato su internet ma non ho trovato nessun esempio così elaborato, quindi mi sono inventato un metodo mio.
praticamente la classe Pager ha tre metodi, uno per ogni pagina
nel quale vado a creare un form come voglio io
//Draws Main Page
private void MainPage()
{
form.deleteAll();//clear form
form.append(status);//add "status" text
form.append(Pos);//add "Position" text
form.append(Dist);//add "Distance" text
form.addCommand(menu);//add link to Menu Page
}
//Draws Menu Page
private void MenuPage()
{
//form.deleteAll();//clear form
form.addCommand(configura);//add link to Configuration Page
form.addCommand(esci);//add link to Main Page
form.addCommand(spegni);//Close Application
}
//Draws Configuration page
private void ConfPage()
{
form.deleteAll();//clear form
form.append(setPhone);//add "Phone" text
form.append(setMess);//add "Message" text
form.append(setDist);//add "Distance" text
form.append(setRefr);//add "Refresh" text
form.addCommand(setConf);//OK Button
form.addCommand(esci);//Cancel Button
}
e poi nel metodo commandAction
vado a beccare il comando selezionato, costruisco il form come dico io e lo ripasso alla MIDlet Safer
public void commandAction(Command c, Displayable arg1)
{
if(menu==c) {this.MenuPage();} //creo il form Menu
if(configura==c) {this.ConfPage();} //creo il form Conf
if(esci==c) {this.MainPage();}//creo il form Main
if(spegni==c){...}//spengo l'app, da implementare
if(setConf==c){...}//cambio la conf da implementare
midlet.setForm(form);//disegno il form sul MIDlet Safer
}
Quello che mi fa specie è che il comando "menu", vada sulla barra in basso, selezionabile da un tasto e gli altri no, quando la loro definizione è identica
configura = new Command("Configura", Command.OK, 1);
esci = new Command("Esci", Command.OK, 1);
spegni = new Command("Spegni", Command.OK, 1);
menu = new Command("Menu", Command.OK, 1);
setConf = new Command("OK", Command.OK, 1);
Qualcuno mi sa spiegare come dovrei fare?