Domanda Errore enclosing

elcondor

Utente Bronze
28 Settembre 2020
48
13
3
24
Ciao a tutti, ho queste due classi seguenti:
Sulla classe NuovoAggiungi mi da errore enclosing sulle righe: Nuovo.this.nome....
qualcuno sa aiutarmi??


Java:
import java.awt.Button;
import java.awt.GridLayout;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;
import javax.swing.JFrame;
import javax.swing.JFrame;


class Nuovo extends JFrame {
      TextField nome = new TextField(50);
      
      Button aggiungi = new Button("Aggiungi");
      
      public Nuovo() {
        super("Nuovo");
        this.nome.setText("Aggiungi nome e numero di telefono");
        this.aggiungi.addActionListener(new aggiungi());
        setLayout(new GridLayout(2, 1));
        add(this.nome);
        add(this.aggiungi);
        pack();
        show();
      }
      
      class aggiungi implements ActionListener {
        public void actionPerformed(ActionEvent e) {
          String name = new String();
          Nuovo.this.nome.selectAll();
          String line = new String();
          String aux = new String();
          try {
            File file = new File("C:/Rubrica.txt");
            FileReader reader = new FileReader(file);
            Scanner in = new Scanner(reader);
            char c = '\n';
            aux = "";
            while (in.hasNextLine()) {
              line = in.nextLine();
              aux = String.valueOf(aux) + line + c;
            }
            reader.close();
          } catch (IOException j) {
            j.printStackTrace();
          }
          name = Nuovo.this.nome.getSelectedText();
          try {
            File doc = new File("C:/Rubrica.txt");
            doc.createNewFile();
            FileWriter fw = new FileWriter(doc);
            fw.write(String.valueOf(aux) + name);
            fw.flush();
            fw.close();
          } catch (IOException j) {
            j.printStackTrace();
          }
        }
      }
    }

e questa:

Java:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;


class NuovoAggiungi implements ActionListener {
    
  public void actionPerformed(ActionEvent e) {
    String name = new String();
    Nuovo.this.nome.selectAll();
    String line = new String();
    String aux = new String();
    try {
      File file = new File("C:/Rubrica.txt");
      FileReader reader = new FileReader(file);
      Scanner in = new Scanner(reader);
      char c = '\n';
      aux = "";
      while (in.hasNextLine()) {
        line = in.nextLine();
        aux = String.valueOf(aux) + line + c;
      }
      reader.close();
    } catch (IOException j) {
      j.printStackTrace();
    }
    name = Nuovo.this.nome.getSelectedText();
    try {
      File doc = new File("C:/Rubrica.txt");
      doc.createNewFile();
      FileWriter fw = new FileWriter(doc);
      fw.write(String.valueOf(aux) + name);
      fw.flush();
      fw.close();
    } catch (IOException j) {
      j.printStackTrace();
    }
  }
}
 
Nuovo non esiste, cosa dovrebbe essere?
Devi creare un oggetto di tipo Nuovo e poi richiamare ciò che ti serve su quell'istanza. Dovrai quindi crare un'istanza di quella classe.
Java:
Nuovo nuovo = new Nuovo();

dopo potrai utilizzare questo oggetto per fare ciò che devi. Ci sono tante cose che non vanno comunque... ad esempio il modo in cui crei l'istanza dei componenti: il costruttore esiste proprio per questo.

Stai anche mischiando AWT e Swing, ti conviene utilizzare solo Swing, quindi JButton e non Button, JTextField e non TextField etc.

Di preciso cosa vorresti fare? Così posso darti indicazioni più precise.
 
Era un esercizio di una rubrica fatto tempo fa. Avevo solo il .jar l'ho decompilato ed ecco tutto. Lo rifaccio forse meglio. La classe nuovo esiste però...
 
Ultima modifica:
Si, la classe esiste, è l'istanza della classe che non è presente (è questo il problema).
Ok.
Messaggio unito automaticamente:

Comunque ho decompilato il file .class ed ho ottenuto questo. È un vecchio esercizio dimenticato. Mi sa che è da rifare....
 
Ti potrebbe forse funzionare con una classe statica.
Prova a riscriverlo, pubblica pure qui i progressi, se trovi difficoltà (o il codice completo una volta terminato). ;)

Adotta magari gli accorgimenti di cui sopra, quindi usa i componenti di Swing e non di AWT, e scrivi tutto in modo "pulito".
 
Il programma funziona se eseguo il .jar.
Quando lo porto in eclipse, decompilato, mi da questo errore. La decompilazione l'ho fatta con java decompiler. Comunque l'errore che mi da è :
No enclosing instace of the type is accessible in scope...:(:(