Lambda

di p0ll0_ il
2 risposte
    prodotto_esporta.addActionListener((e) -> {
                String titoli[] = {"Prodotti", "Clienti", "Fornitori", "Utenti", "Vendite", "Acquisti", "Reparti", "Cronologia", "Cestino"};
                JTable tabelle[] = {tabella_prodotti};
                new CLASSE_ALTRO().esporta_(
                        titoli[i],
                        tabelle[i]);
            });


Che cosa devo fare? Grazie !:)

2 Risposte

  • p0ll0_ ha scritto:


    Che cosa devo fare?
    La variabile i viene modificata dal for, quindi non può essere concettualmente effectively final, né può essere marcata final. Pertanto non la puoi usare nel corpo della lambda.

    Però puoi copiare il valore di i in una variabile che NON modificherai.

    int i2 = i;

    e i2 la usi nella lambda (es. titoli[i2] nella lambda è ok)
  • Non da nessun errore,ma il codice non funziona
      JMenu Esporta = new JMenu("Esporta");
            String tito[] = {"Prodotti", "Clienti", "Fornitori", "Utenti", "Vendite", "Acquisti", "Reparti", "Cronologia", "Cestino"};
            for (int i = 0; i < 1; i++) {
                JMenuItem prodotto_esporta = new JMenuItem(tito[i]);
                int ii = i;
                prodotto_esporta.addActionListener((e) -> {
                    String titoli[] = {"Prodotti", "Clienti", "Fornitori", "Utenti", "Vendite", "Acquisti", "Reparti", "Cronologia", "Cestino"};
                    JTable tabelle[] = {tabella_prodotti};
    
                    new CLASSE_ALTRO().esporta_(
                            titoli[ii],
                            tabelle[ii]);
                });
                Esporta.add(prodotto_esporta);
            }
            JMenu_file.add(Esporta);
Devi accedere o registrarti per scrivere nel forum
2 risposte