Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Usare l indice di una jlist da un altro frame

    Salve a tutti,
    In poche parole, ho una jlist con varie voci (es bevande, antipasti, primi ecc).. al click su ogni voce apre da un altro frame una jtable che mi visualizza il nome del piatto e il prezzo (premetto che c'è una connessione con un db e funziona tutto ) , e in base alla voce che clikko mi carica i parametri associati a quella voce..

    Il problema che ho è che essendo due classi differenti, non riesco a passare l'indice della selezione della jlist, nel metodo che richiamo nella classe della jtable per caricare i dettagli dal db..

    vi posto un po di codice :

    codice:
    public insericiMenu() {
            
            initComponents();
            InterfacciaDB inter = new InterfacciaDB();
            ArrayList list = new ArrayList();
            Piatto piatto = new Piatto();
            list = inter.prelevadettagliomenu(8); qua devo passare l indice della jlist  
            for (int i = 0; i < list.size(); i++) {
                piatto = (Piatto) list.get(i);
                TableModel jTable1Model = new DefaultTableModel(
                            new String[][] { {piatto.descrizione, String.valueOf(piatto.prezzo) }},
                            new String[] { "Nome Piatto", "Prezzo"});
                jTable1.setModel(jTable1Model);
            }
         }
    
    Ho provato a fare dall altra parte
    
    int tipo;
    
    public void setTipo(int tipo) {
            this.tipo = jlist1. getSelectedIndex; 
    public int getTipo() {
            return tipo;
        }
    e passare al metodo prelevadettagliomenu(fm.getTipo()) ma non va qualcuno sa consigliarmi??

    grazie

  2. #2
    Nessun aiuto?

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Non è che la cosa sia molto chiara. Per esempio, non si sa chi è che istanzia le due classi.

    Ad ogni modo, se hai due classi distinte e tu devi prendere un valore da una all'altra (un valore nella class A da usare nella classe B) le strade sono sempre le solite 2:

    1) Passare il valore della classe A alla B in fase di creazione della classe B (se la classe B viene creata da A), tramite costruttore o tramite un metodo da richiamare

    2) Prevedere un metodo di accesso nella classe A che consenta di recuperare il valore e passare alla classe B un riferimento alla classe A

    Ci sono decine di esempi di questo tipo di problema nel forum.


    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

  4. #4
    Originariamente inviato da LeleFT

    Ci sono decine di esempi di questo tipo di problema nel forum.
    ho cercato prima di aprire discussione ma non ho trovato nulla!!!

    Originariamente inviato da LeleFT
    2) Prevedere un metodo di accesso nella classe A che consenta di recuperare il valore e passare alla classe B un riferimento alla classe A
    è quello che ho provato a fare, dichiarando una variabile di tipo int e assegnarli il valore dell indice

    int indice = jlist.getSelectedIndex();

    e recuperarlo dall altra parte.. a sto punto è sbagliato usare getSelectdIndex() ?

    mi puoi fare un esempio pls? grazie ciao

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Originariamente inviato da claudio852001
    è quello che ho provato a fare, dichiarando una variabile di tipo int e assegnarli il valore dell indice

    int indice = jlist.getSelectedIndex();

    e recuperarlo dall altra parte.. a sto punto è sbagliato usare getSelectdIndex() ?

    mi puoi fare un esempio pls? grazie ciao
    No, non è sbagliato, anzi, è esattamente ciò che va fatto, ma riguardando il codice che hai postato sopra, ad esempio, stai facendo (in parte) l'esatto opposto di ciò che va fatto:

    codice:
    int tipo;
    
    public void setTipo(int tipo) {
            this.tipo = jlist1. getSelectedIndex();   // mancavano le parentesi tonde
            // qui andrebbe messo così, ma al momento non ti serve
            this.tipo = tipo;
    }
    Un metodo che si chiama setTipo() e riceve un intero dovrebbe occuparsi di settare appunto una variabile con il valore che gli è stato passato... tu la setti con un valore che non c'entra nulla (e a te non serve affatto un setTipo(), al momento... ma solo un getTipo()) e ignori il valore passato.

    Togli di mezzo questo metodo, che tanto non ti serve.

    Riguardo a questo
    codice:
    public int getTipo() {
            return tipo;
        }
    Se la variabile "tipo" fosse stata già valorizzata (dall'esterno o da qualche altra routine) avrebbe senso... ma nessuno mi garantisce che tu chiami da qualche parte setTipo() (nella versione errata tua, che, paradossalmente, sarebbe corretta con questa versione di getTipo). Andrebbe riscritta così:

    codice:
    public int getTipo() {
       return jlist1.getSelectedIndex();
    }
    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

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.