Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    45

    [J2ME] problema visibilità

    ho un piccolo problemino, sto notando
    che se faccio una cosa del genere:

    Thread t = new Thread(){
    public void run(){
    form = new Form("test");
    // La funzione riempie l'array correttamente, l'ho
    testata...
    String[] nominativo = new
    Espandi().ricerca_clienti(nomec, nom, cognom,
    comun, tel);
    Gauge ga = new Gauge(" ", false,
    nominativo.length,
    1);
    form.append(ga);
    display.setCurrent(form);
    }
    };
    t.start();
    if(nominativo.length > 0).....

    Il problema è che l'array nominativo, non è visibile
    all'esterno del thread, e se lo dichiaro prima del
    thread, il thread poi non può modificarlo (mi dice che
    deve essere dichiarato static...).
    Non c'è modo di rendere visibile l'array nominativo
    fuori dal thread? ci sto a uscì pazzo...

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    L'unico modo è quello di dichiararlo all'esterno della classe.
    E' ovvio che se il metodo dentro al quale crei il thread è statico, anche l'array deve essere statico. Ma non vedo perchè il Thread non possa modificarlo anche se è statico... statico non significa inalterabile!


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    45
    Hai ragione!

    Infatti non mi dice che deve essere static, ma mi dice che deve essere final...

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    45
    Ho provato anche a mettere le var nel thread, però a quel punto, la List che creo nel thread, al comando:

    List.setCommamdListener(this);

    Mi dà errore... Ma perchè sti thread sono così rognosi???
    Qualcuno sà aiutarmi?

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Non ho mai sentito di metodi che richiedono che un certo tipo di dato sia dichiarato final...
    Ad ogni modo, se posti un po' di codice forse possiamo aiutarti meglio, perchè così, a tentoni, risulta difficile capire dove può essere il problema.
    I thread, di per sè, non sono rognosi.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    45
    Grazie!
    Dopo mille tentativi sono giunto a questo:
    Nonostante le dichiarazioni final di nominativo e di img, non ho errori di compilazione ne di esecuzione...


    public void elencaClienti(){
    final String[] nominativo = new Espandi().ricerca_clienti(nomec, nom, cognom, comun, tel);
    final Image[] img = new Image[nominativo.length];
    if(nominativo.length > 0) {
    Thread t = new Thread(){
    public synchronized void run(){
    Gauge ga = new Gauge(" ", false, nominativo.length, 0);
    ga.setLayout(ga.LAYOUT_CENTER|ga.LAYOUT_EXPAND);
    search.append(ga);
    display.setCurrent(search);
    //Colonna del cognome e del nome nell'array bidimensionale
    //nomec
    int colonnaCogn = 3;
    int colonnaNome = 4;
    Image icon = MyCanvas.icon;
    for(int j = 0; j < nominativo.length; j++){
    String ind = nomec[j+1][0];
    String[] add = new Espandi().richieste(ind);
    int ric_effettive = add.length+1;
    nominativo[j] = nominativo[j]+" ("+ric_effettive+")";
    try {
    icon = Image.createImage("/upload/immagini/kuser.png");
    } catch(Exception e){
    System.out.println("errore: "+e);
    }
    add = null;
    img[j] = icon;
    }
    }
    };
    t.start();
    while(t.isAlive()){
    }
    List cli = new List("ELENCO DEI CLIENTI", Choice.IMPLICIT,
    nominativo, img);
    retry_cli = new Command("Indietro", Command.BACK, 1);
    cli.addCommand(retry_cli);
    cli.setCommandListener(this);
    display.setCurrent(cli);
    } else {
    // Se non trovo clienti metto a video una Alert
    visualizzaAlert("NON CI SONO CLIENTI CHE SODDISFANO I CRITERI DI " +
    "RICERCA");
    }
    }

    In pratica voglio aggiungere un Gauge che faccia da barra di caricamento all'applicazione, visto che i tempi di elaborazione sono abbastanza lunghi.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.