J2ME doppio menu' (in liste implicite)

hertion

Nuovo Utente
30 Gen 2010
7
0
0
Raga ciao a tutti.... sono nuovo nel foro... se ho sbagliato sezione chiedo infinitamente perdono ai mod xD 0:)0:)0:)

vi volevo domandare una cosa.... (nn mi pigliate per il sedere k non conosco java etc pliz... )
mi sono avvicinato al mondo della programmazione da pochissimo.... ho tentato di fare questa applicazione che dovrebbe presentare questa struttura :

------------------ =>scelta1 =>immagine
--------=>scelta1 =>scelta2 =>immagine
------------------=>scelta3 =>immagine

------------------=>scelta1 =>immagine
MENU:--=>scelta2 =>scelta2 =>immagine
------------------=>scelta3 =>immagine

------------------=>scelta1 =>immagine
--------=>scelta3 =>scelta2 =>immagine
------------------=>scelta3 =>immagine



il source l'ho postato su megaupload in quanto sono 2 class... se volete lo posto qui in uno spoiler....

LINK : http://www.megaupload.com/?d=AAZ16F77 :crying::crying::crying::crying:
 

hertion

Nuovo Utente
30 Gen 2010
7
0
0
Grz

Ciao alessandro.... in teoria il codice dovrebbe essere corretto... (almeno nella compilazione non mi da errori...)

il problema sta nella seconda lista implicita.... non me la apre infatti...

(io utilizzo Java(TM) ME Platform SDK 3.0) e quando faccio play cn l'emulatore touch clicco su matematica k dovrebbe portare al secondo menu e ivece si kiude l'appl....


p.s. mediafire link : http://www.mediafire.com/?nyyjoigzijq
 

lotus

Utente Attivo
5 Mag 2009
543
8
0
Potresti postare il codice perchè non posso accedere a server di upload\download da questa postazione.

Grazie
CIro
 

hertion

Nuovo Utente
30 Gen 2010
7
0
0
Ciao certamente... allora


questo è l' " HelloMIDlet.java "
package hello;

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import javax.microedition.io_OutputConnection;
import javax.microedition.io.Connector;
import javax.microedition.io.ConnectionNotFoundException;
import java.io.InputStream;
import hello.*;


public class HelloMIDlet extends MIDlet implements CommandListener {

private Command exitCommand; // The exit command
private Display display; // The display for this MIDlet
private List a; // lista di scelta 1 (matematica, geometria e geometrai analitica)
private Command Back;
public List x;
// The display for this MIDlet

public HelloMIDlet() {
display = Display.getDisplay(this);
exitCommand = new Command("Exit", Command.EXIT, 0);
Back = new Command("Indietro", Command.BACK, 1); // back command



}


public void startApp() {

a = new List ("Formulario by hertion", List.IMPLICIT);
a.append(" Matematica", null);// lista implicita
a.append(" Geometria", null);
a.append(" Geometria analitica", null);
a.append(" Fisica ", null);
a.addCommand(exitCommand);
a.setCommandListener(this);// mette in ascolto per evenuali comandi

display.setCurrent(a);// setta come predefinito sul display la lista



}

public void pauseApp() {
}

public void destroyApp(boolean unconditional) {
}

public void commandAction(Command c, Displayable s) {
if (c == exitCommand) {
destroyApp(false);
notifyDestroyed();
}
else if (c == Back){
display.setCurrent(a);
}
else if (c==List.SELECT_COMMAND)
{
//Recupero l'indice dell'elemento selezionato
int index = a.getSelectedIndex();
if(index == 0) {
x= matematica.b;
display.setCurrent(x);
}
}




}

}



/* Questo va messo in un nuovo class.... form= new Form("Numeri primi:");

form.append(" FORMULARIO BY HERTION");
form.append(img);
form.addCommand(Back);
form.setCommandListener(this);

try {
img = Image.createImage("/hello/Numeri_primi.PNG");// Ricerca e creazione immagine
} catch (Exception e) {
System.out.println("L'immagine non puo' essere visualizzata!");
// si è generata un'eccezione
// per esempio il file "/img01.png"
// potrebbe non esistere
}
}
form.addCommand(exitCommand);

form.setCommandListener(this);
*/






e questo il " matematica.java "

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package hello;

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import javax.microedition.io_OutputConnection;
import javax.microedition.io.Connector;
import javax.microedition.io.ConnectionNotFoundException;
import java.io.InputStream;
/**
*
* @author Hertion
*/
public class matematica extends MIDlet implements CommandListener {

public static List b;
public static Command Back;
public static Display display;

public matematica()

{

Back= new Command("Indietro", Command.BACK, 1); // back command

}



public void startApp() {
b = new List ("Matematica", List.IMPLICIT);

b.append("Aritmetica", null);
b.append("Algebra", null);
b.append("Geometria del piano", null);
b.append("Geometria dello spazio", null);
b.append("solidi rotondi ", null);
b.append("Geometria analitica", null);
b.append("Trigonometria", null);
b.append("Analisi", null);
b.append("Utilità", null);


b.addCommand(Back);
b.setCommandListener(this);
}

public void pauseApp() {
}

public void destroyApp(boolean unconditional) {
}


public void commandAction(Command c, Displayable d) {

}



}


p.s. L'ho allegato anke qui..... l'ho addato a un rar ma siccome qui accetta solo zip l'ho rinominato manualmente... se nn ve lo apre basta aprirlo cn winrar xDxD

GRAZIE 1000.....
 

Allegati

  • src.zip
    1,8 KB · Visite: 170

lespaul

Utente Attivo
30 Lug 2009
91
6
0
www.simplesoft.it
Ciao Hertion, ho dato un'occhiata al codice. In una applicazione Java ME
bisogna creare una sola classe che estende MIDLet e come dire un solo main. La classe matematica non dovrebbe estendere MIDLet (forse e meglio Form). Poi dunque se utilizzi un oggetto statico come in questo caso 'matematica.b' risulta 'null' secondo la tua chiamata poichè carichi i valori nel costruttore della classe ed in questo caso accedendo al membro statico il costruttore non viene richiamato. Comunque io ti consiglio di provare a fare in questo modo o lameno riflettere su questo :):
1) Nella classe matematica non estendere MIDLet
2) quando dichiari List utlizza questo codice:
Codice:
public static List b;
static {
  a = new List ("Formulario by hertion", List.IMPLICIT);
  a.append(" Matematica", null);// lista implicita
  a.append(" Geometria", null);
  a.append(" Geometria analitica", null);
  a.append(" Fisica ", null);
}
da inserire tra il corpo della classe fuori dal costruttore.

Comunque e alquanto confuso il codice :confused:. Se vuoi la lista caricata in un'altra finestra forse ti conviene definire un'altro Form dove inserisci la lista.

Facci sapere
 

hertion

Nuovo Utente
30 Gen 2010
7
0
0
xD

lo so k è confuso...:crying::crying: lol xD l'ho creato partendo da 0 e non sapendo programmare ancora decentemene in java0:)0:)0:) xD cmq si l'idea era di aprire una nuova finestra....0:):D:love: tu cosa mi consiglieresti di fare? :confused::confused:
 

hertion

Nuovo Utente
30 Gen 2010
7
0
0
ok....

ok allora... ho tentato cosi'... l'applet funziona ma mi rimane un problema in questo modo.... :


Matematica.java :



/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package hello;

import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.List;

/**
*
* @author Hertion
*/
public class Matematica implements CommandListener {

public Command Back;
public static List b;
public Image img;
public Form form;




static {
b = new List ("Formulario by hertion", List.IMPLICIT);
b.append(" Aritmetica ", null);// lista implicita
b.append(" Algebra ", null);
b.append(" Geometria del piano ", null);
b.append(" Geometria dello spazio ", null);
b.append(" Geometria dello spazio ", null);
b.append(" Geometria analitica ", null);
b.append(" Trigonometria ", null);
b.append(" Analisi ", null);
b.append(" Utilità ", null);

b.setCommandListener(null);

}

public void commandAction(Command c, Displayable d) {

if (c==List.SELECT_COMMAND)
{
//Recupero l'indice dell'elemento selezionato
int index = b.getSelectedIndex();
if(index == 0) {

display.setCurrent(x);

/* IL PROBLEMA E' QUI' : il comando display non me lo riconosce il quanto la classe non è estesa a midlet.... come posso settare i comandi della seconda lista verso una terza lista senza utilizzare il setcurrent in questo modulo??? altrimenti esiste un modo per settarlo? se mi sono spiegato male disp... ditemelo.... grazie a tutti della cortesia...*/

}
}
}

public void destroyApp(boolean unconditional) {
}


}







HelloMIDlet.java :



package hello;

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import javax.microedition.io_OutputConnection;
import javax.microedition.io.Connector;
import javax.microedition.io.ConnectionNotFoundException;
import java.io.InputStream;

public class HelloMIDlet extends MIDlet implements CommandListener {

private Command exit; // The exit command
private Display display; // The display for this MIDlet
private Command Back;
public List a;
public List x;
public HelloMIDlet() {
display = Display.getDisplay(this);
exit = new Command("Exit", Command.EXIT, 0);
Back = new Command("Back", Command.BACK, 1);
}

public void startApp() {


a = new List ("Formulario by hertion", List.IMPLICIT);
a.append(" Matematica", null);// lista implicita
a.append(" 2 scelta", null);
a.append(" 3 scelta ", null);
a.append(" 4 scelta ", null);


a.addCommand(exit);
a.setCommandListener(this);
display.setCurrent(a);

/////////////////////////*****Matematica******////////////////////////////////

x= Matematica.b;
x.addCommand(Back);
x.setCommandListener(this);





}

public void pauseApp() {
}

public void destroyApp(boolean unconditional) {
}

public void commandAction(Command c, Displayable s) {
if (c == exit) {
destroyApp(false);
notifyDestroyed();
}
else if(c==Back){
display.setCurrent(a);
}
else if (c==List.SELECT_COMMAND)
{
//Recupero l'indice dell'elemento selezionato
int index = a.getSelectedIndex();
if(index == 0) {

display.setCurrent(x);
}
}
}

}







P.S.: ESSENDO STATIC NON MI FA IMPLEMENTARE NEMMENO IL COMMANDLISTENER.... SI PUO RIMEDIARE?... XKE SE NO UNA LISTA SENZA COMMAND LISTENER NON HA TANTO SENSO XD SCUSATE PER IL CAPS LOCK MA TEMEVO K IN TUTTO IL CODICE NON SI LEGGESSE QLL K SCRIVEVO XD
 
Ultima modifica:

lespaul

Utente Attivo
30 Lug 2009
91
6
0
www.simplesoft.it
Ciao Hertion, allora il problema qua è un po basilare, cioè non ti è chiaro come strutturare l'applicazione. Ti consiglio di consultare alcune guide J2ME di mrwebmaster che negli esempi puoi trovare struttura di applicazione https://www.mrw.it/j2me/articoli/, anche se non trattano specificatamente il tuo problema. Inoltre ti consiglio di leggere qualche guida che parte da zero su J2ME tipo qualche manuale della mokabyte che sono gratuiti ed in pdf. Dunque io ho ritoccato un po il tuo codice, cambiando la struttura delle classi, senza utilizzare membri statici (e poi percè usi static??). Te li posto:
La classe HelloMIDlet:
Codice:
package hello;

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



public class HelloMIDlet extends MIDlet implements CommandListener {

    private Command exit; // The exit command
    private Display display; // The display for this MIDlet
    private Command Back;
    public List a;
    public List x;
    public Matematica m;

    public HelloMIDlet() {
        display = Display.getDisplay(this);
        m = new Matematica(display);
        exit = new Command("Exit", Command.EXIT, 0);
        Back = new Command("Back", Command.BACK, 1);
    }

    public void startApp() {


        a = new List("Formulario by hertion", List.IMPLICIT);
        a.append(" Matematica", null);// lista implicita
        a.append(" 2 scelta", null);
        a.append(" 3 scelta ", null);
        a.append(" 4 scelta ", null);


        a.addCommand(exit);
        a.setCommandListener(this);
        display.setCurrent(a);

/////////////////////////*****Matematica******////////////////////////////////

        
        m.addCommand(Back);
        m.setCommandListener(this);





    }

    public void pauseApp() {
    }

    public void destroyApp(boolean unconditional) {
    }

    public void commandAction(Command c, Displayable s) {
        if (c == exit) {
            destroyApp(false);
            notifyDestroyed();
        } else if (c == Back) {
            display.setCurrent(a);
        } else if (c == List.SELECT_COMMAND) {
//Recupero l'indice dell'elemento selezionato
            int index = a.getSelectedIndex();
            if (index == 0) {

                display.setCurrent(m);
            }
        }
    }
}
La classe Matematica:
Codice:
package hello;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;



/**
 *
 * @author Administrator
 */
public class Matematica extends List implements CommandListener {

public Command Back;

public Image img;
public Form form;
public Display display;



public Matematica(Display display) {
super("Formulario by hertion", List.IMPLICIT);
this.display = display;
append(" Aritmetica ", null);// lista implicita
append(" Algebra ", null);
append(" Geometria del piano ", null);
append(" Geometria dello spazio ", null);
append(" Geometria dello spazio ", null);
append(" Geometria analitica ", null);
append(" Trigonometria ", null);
append(" Analisi ", null);
append(" Utilità ", null);
setCommandListener(this);
display.setCurrent(this);
}


public void commandAction(Command c, Displayable d) {

if (c==List.SELECT_COMMAND)
{
//Recupero l'indice dell'elemento selezionato
int index = getSelectedIndex();
if(index == 0) {



/* IL PROBLEMA E' QUI' : il comando display non me lo riconosce il quanto la classe non è estesa a midlet.... come posso settare i comandi della seconda lista verso una terza lista senza utilizzare il setcurrent in questo modulo??? altrimenti esiste un modo per settarlo? se mi sono spiegato male disp... ditemelo.... grazie a tutti della cortesia...
--------------
Adesso hai un riferimento che l'hai passato al costruttore dalla
MIDLet

*/

}
}
}

public void destroyApp(boolean unconditional) {
}


}
Adesso forse dovrebbe funzionare. In poche parole Matematica è una lista e quindi estende List ed implementa il CommandListener. Nel costruttore riceve un riferimento al Display dalla MIDLet principale, quindi all'interno della classe puoi utilizzare display per indirizzare altri menu oppure Form, non so cosa devi fare di preciso.

E nella MIDLet principale utilizzo direttamente l'oggetto Matematica dove creo un'istanza nella classe. Non so se ti è chiaro cmq ripeto ti consiglio di leggere qualche guida.
Facci sapere
Ciao
 

hertion

Nuovo Utente
30 Gen 2010
7
0
0
Xd

xD ora provero' cosi'..... avevo usato static xk mi avevano dtt cosi' xD xo non avevo pensato k il commandlistener non si potesse poi riferire a elementi statici xD per quanto riguarda la guida non si potrebbe avere un link??? l'unica k ho trovato è su html.it ma è alquanto generica.... mi servirebbe qualkosa di + approfondito..... cmq grazie a tutti della cortesia!! :love::love::love::love:
 
Discussioni simili
Autore Titolo Forum Risposte Data
K [J2ME] "convertire" file .txt in array o simili Java 1
A [Java] J2ME(NetBeans) lettura dati file txt Java 5
C Corso per J2ME Java 1
M [Java] Nuova sezione J2ME!?! Java 0
P Streaming audio J2ME Windows e Software 0
D problema j2me php PHP 6
M java lettura scrittura file con j2me Java 0
Cosina Doppio file fopen PHP 2
P [HTML] Eliminare doppio menu in wordpress WordPress 2
R [MS Access] COME APRIRE UNA MASCHERA FACENDO DOPPIO CLICK SU UN RECORDSET MS Access 1
R [MS Access] aprire maschera con doppio click su recordset di sottomaschera MS Access 4
N Doppio Form in pagina php PHP 6
T [PHP] impedire un doppio INSERT INTO dopo reload della pagina PHP 3
MikSkagit [PHP] Doppio SELECT PHP 10
A [Javascript] [RISOLTO] Doppio "submit", in uno stesso "Form" , che puntino ad "action" diversi Javascript 1
T mostrare solo una volta il risulato doppio Database 10
U [Javascript] [HTML] doppio click Javascript 18
P doppio problema nella memorizzazione dati PHP 11
B Problema form mail per invio doppio allegato PHP 1
E Input array doppio PHP 0
filippino Problema doppio H1 in Home SEO e Posizionamento 1
K [risolto] Campo con doppio ordimanento MySQL 6
L doppio array in uno solo PHP 19
Jonn Redirect Doppio (si può chiamare così?) PHP 3
Emix Doppio form con calcolo variabili PHP 5
E Problema array doppio Javascript 1
A Impostazione cookie errata con doppio login PHP 0
riminese77 Evitare doppio click nelle pagine ASP.NET 5
Xelia htaccess - doppio RewriteEngine on PHP 1
C Problema con il doppio invio nel form con onsubmit HTML e CSS 9
E Doppio inserimento dati nel DB PHP 7
E doppio invio da un form PHP 5
O Doppio pagamento hosting Hosting 4
P inserimento doppio url in js Javascript 0
M Problema doppio router Apache 1
F codice doppio per la stessa pagina Javascript 1
N 8 > 23 Febbraio: Doppio Evento Live a Roma con Tony Braschi Altri Annunci 0
U 2007: 8 & 23 Febbraio - Doppio Evento a Roma Discussioni Varie 0
U 2007: 8 & 23 Febbraio - Doppio Evento a Roma Altri Annunci 0
O Doppio invio mail da modulo asp Classic ASP 2
S Problema Doppio Ciclo: For & While PHP 0
waterass Doppio sist. operativo... Linux e Software 10
R doppio filmato Flash 2
pugia Doppio link a due frame diversi HTML e CSS 4
M Creazione menu a tendina Javascript 3
D menu con submenu orizzontale HTML e CSS 0
Cosina Menu fisso copre i titoli quando cliccati nel sommario jQuery Javascript 4
G creazione menu a tendina e invio a pagina php PHP 1
P Sub menu con Collapse. Javascript 0
R abilitare menu a tendina tramite relativa chekbox PHP 17

Discussioni simili