Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Come rispettare tutte le nuove regole per i monopattini elettrici? La guida per non rischiare sanzioni
Come rispettare tutte le nuove regole per i monopattini elettrici? La guida per non rischiare sanzioni
Sono ormai definitive le nuove norme del Codice della Strada per i monopattini elettrici. Non solo targa e assicurazione, le regole sono tante e riguardano diversi aspetti, vi spieghiamo come evitare sanzioni che possono essere salate
DLSS 4.5: con Dynamic Frame Generation e MFG 6X NVIDIA alza la posta
DLSS 4.5: con Dynamic Frame Generation e MFG 6X NVIDIA alza la posta
DLSS 4.5 introduce Dynamic Multi Frame Generation e MFG 6X, permettendo fino a cinque frame generati per ogni frame renderizzato. I test su Cyberpunk 2077 e 007 First Light mostrano forti incrementi di FPS e riduzione della latenza su RTX 5090 Laptop. Migliorano fluidità, stabilità e qualità visiva.
Plaud NotePin S, il registratore IA si fa indossabile (ma è facile da perdere)
Plaud NotePin S, il registratore IA si fa indossabile (ma è facile da perdere)
Quattro modi di indossarlo, stessa app del Plaud Note Pro e integrazione con il desktop. Il registratore IA da indossare di Plaud eccelle in mobilità, ma resta vincolato all'abbonamento ed è facile da perdere
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 09-06-2009, 15:53   #1
divincodin
Member
 
Iscritto dal: Nov 2008
Messaggi: 64
[Java] Evento a chiusura applicazione

Ciao,come faccio a fare in modo che una volta che l'utente chiude la finestra,scriva i dati temporanei in file txt?
Mi spiego meglio...come scrivere su file lo so,ma non riesco a fare in modo che appena l'utente chiude la finestra tramite la "x" rossa,i dati vengono salvati.
Per la finestra ho impostato:

Codice:
setDefaultCloseOperation(EXIT_ON_CLOSE);
Ecco...non appena avviene ciò,devo eseguire questa parte di codice:

Codice:
 File f=new File(FileDiTestodir);
 FileOutputStream fos=new FileOutputStream(f);
 PrintStream ps=new PrintStream(fos);
 for (int l=0;l<righe.size();l++)
   ps.println(righe.get(l));
Grazie in anticipo per una eventuale risposta...ciao
divincodin è offline   Rispondi citando il messaggio o parte di esso
Old 09-06-2009, 16:09   #2
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Bene, devi solo dotare il componente che rappresenta la tua finestra da chiudere di un WindowListener, e inserire il codice che deve essere eseguito subito prima della chiusura della finestra nel corpo del metodo windowClosing, da implementare.

Se scegli di implementare un WindowListener, che è un'interfaccia, allora devi implementare anche tutti gli altri metodi (puoi semplicemente lasciare i loro corpi vuoti), altrimenti puoi usare WindowAdapter, che è una classe che già implementa l'interfaccia WindowsListener, e tu devi solo fare l'override del metodo windowClosing.

Qui i javadoc di WindowListener
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)

Ultima modifica di banryu79 : 09-06-2009 alle 17:27.
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 11-06-2009, 09:38   #3
divincodin
Member
 
Iscritto dal: Nov 2008
Messaggi: 64
Perchè appena inserisco "implementes WindowListener" mi da errore?

L'intestazione della classe è la seguente:
Codice:
class Frame extends JFrame implements ActionListener,ListSelectionListener,WindowListener
L'errore che mi da è questo:
Codice:
Applicazione.java:34: Frame should be declared abstract; it does not define windowClosing(java.awt.event.WindowEvent) in Frame
class Frame extends JFrame implements ActionListener,ListSelectionListener,WindowListener
^
1 error
divincodin è offline   Rispondi citando il messaggio o parte di esso
Old 11-06-2009, 09:43   #4
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da divincodin Guarda i messaggi
Perchè appena inserisco "implementes WindowListener" mi da errore?

L'intestazione della classe è la seguente:
Codice:
class Frame extends JFrame implements ActionListener,ListSelectionListener,WindowListener
L'errore che mi da è questo:
Codice:
Applicazione.java:34: Frame should be declared abstract; it does not define windowClosing(java.awt.event.WindowEvent) in Frame
class Frame extends JFrame implements ActionListener,ListSelectionListener,WindowListener
^
1 error
Perchè se dichiari una classe che implements un'interfaccia, a meno che non dichiari la classe abstract, la classe deve implementare tutti i metodi dichiarati nell'interfaccia.
Se chiedi a javac di compilare e non hai ancora implementato i metodi, javac giustamente ti segnala un errore e non compila.
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 11-06-2009, 09:56   #5
divincodin
Member
 
Iscritto dal: Nov 2008
Messaggi: 64
Ho fatto come mi avevi detto nella prima risposta,ho implementato tutti gli altri metodi WindowListener lasciando i loro corpi vuoti....ma l'errore che da è questo.
In sostanza l'intestazione è quella che ho scritto prima e dentro la classe,dopo l'actionperformed ho inserito:

Codice:
        public void windowClosed(WindowEvent event) 
    {
             //aggiornaTxt(righe);
        File f=new File(FileDiTestodir);
        FileOutputStream fos=new FileOutputStream(f);
        PrintStream ps=new PrintStream(fos);
        for (int l=0;l<righe.size();l++)
          ps.println(righe.get(l));    
    

      }
      
      public void windowActivated(WindowEvent event) { }
      public void windowDeactivated(WindowEvent event) {}
      public void windowDeiconified(WindowEvent event) {}
      public void windowIconified(WindowEvent event) { }
      public void windowOpened (WindowEvent event) { }
divincodin è offline   Rispondi citando il messaggio o parte di esso
Old 11-06-2009, 10:00   #6
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Come ti ha anche detto javac: manca l'implementazione di windowClosing; tu hai implementato tutti i metodi dichiarati in WindowListener, tranne quello.

Che, tra l'altro, per quello che vuoi fare tu, da come l'hai descritto nel primo post, è proprio il metodo che ti serve, non windowClosed().
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 11-06-2009, 10:02   #7
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
A, un'altra cosa: penso sia meglio wrappare le operazioni di scrittura file che fai dentro un Thread/Runnable e lanciarlo, da dentro windowsClosing, in modo da non appesantire il lavoro dell'EDT.
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 11-06-2009, 12:05   #8
divincodin
Member
 
Iscritto dal: Nov 2008
Messaggi: 64
Siccome il file va aggiornato non soltanto quando l'utente chiude la finestra,ma anche in un altro caso...al posto di scrivere 2 volte il codice di scrittura,ho creato un metodo interno alla classe "SalvaTxt()". Lo richiamo sia nel 2° caso...e x la chiusura della finestra ho usato una classe anonima annidata,all'interno del costruttore:

Codice:
class Frame extends JFrame implements ActionListener,ListSelectionListener
{
    pannelloa a=new pannelloa();
    JMenuItem apriCartella,apriVideo;
    File f;
    String pathfile,nameF;
    JList ListaIcone;
    JPanel PannelloAnte,PannelloComme,ModificaSalva;
    JLabel Label_1;
    JTextArea TextArea;
    String FileDiTestodir;
    ArrayList righe; //conterrà le righe del file txt corrente
    JButton modifica,salva;
    String corrente;
    int indexcorrente;
      
    public Frame()
    {
      setTitle("Analizzatore Video Medicali");
      setDefaultCloseOperation(EXIT_ON_CLOSE);
      setExtendedState(MAXIMIZED_BOTH);
      
      addWindowListener(new WindowAdapter(){
        public void windowClosing(WindowEvent e)
	 {
	   SalvaTxt();
         }
       });
      
      
      JMenuBar barra=new JMenuBar();
      JMenu menu=new JMenu("File");
      apriVideo=new JMenuItem("Apri Video");
      apriCartella=new JMenuItem("Apri Cartella Immagini");
      barra.add(menu);
      menu.add(apriVideo);
      menu.add(apriCartella);
      apriVideo.addActionListener(this);
      apriCartella.addActionListener(this);
      this.setJMenuBar(barra);
      ...
      ...
} //chiusura costruttore
E questo è il metodo interno alla classe che richiamo:

Codice:
    public void SalvaTxt()
    {
        try
        {
         //aggiornaTxt(righe);
         File f=new File(FileDiTestodir);
         FileOutputStream fos=new FileOutputStream(f);
         PrintStream ps=new PrintStream(fos);
         for (int l=0;l<righe.size();l++)
           ps.println(righe.get(l));  
          fos.close();
        }
        
        catch(Exception e3){}
          
    }
Che te ne sembra di questa mia soluzione?
Cmq ti ringrazio ancora una volta per l'aiuto...sei un mito
divincodin è offline   Rispondi citando il messaggio o parte di esso
Old 11-06-2009, 12:10   #9
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da divincodin Guarda i messaggi
Che te ne sembra di questa mia soluzione?
Bravo, hai usato bene l'Adapter come classe anonima annidata.

Quote:
Originariamente inviato da divincodin Guarda i messaggi
Cmq ti ringrazio ancora una volta per l'aiuto...sei un mito
Eh, magari fossi un mito, forse così riuscirei a finire l'inghippo di applicazione in cui sono invischiato al momento
Comunque prego.
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Come rispettare tutte le nuove regole per i monopattini elettrici? La guida per non rischiare sanzioni Come rispettare tutte le nuove regole per i mono...
DLSS 4.5: con Dynamic Frame Generation e MFG 6X NVIDIA alza la posta DLSS 4.5: con Dynamic Frame Generation e MFG 6X ...
Plaud NotePin S, il registratore IA si fa indossabile (ma è facile da perdere) Plaud NotePin S, il registratore IA si fa indoss...
Redmi Watch 6 in prova: lo smartwatch con ampio display da 2000 nit a meno di 100 euro Redmi Watch 6 in prova: lo smartwatch con ampio ...
Mad Catz M.M.O. 7+: lo stesso DNA del R.A.T. 8+ ADV, ma con molti più pulsanti Mad Catz M.M.O. 7+: lo stesso DNA del R.A.T. 8+ ...
Google AI Plus cambia: ora costa di meno...
Pebble Round 2 slitta a luglio: ecco il ...
Kingdom Hearts 4, un nuovo trailer di ga...
Tornano in offerta su Amazon 4 SUP / pad...
Con coupon su Amazon, oggi torna a 107,9...
'Dobbiamo ripensare tutto': brutte notiz...
Mobi Fold e Spotligth 2: da Logitech un ...
Amazon, accordo con Corning per la produ...
HONOR esagera: il prossimo mid-range avr...
Offerta rapida Amazon: SSD esterno Lexar...
Alibaba, Baidu e BYD nella lista militar...
L'app di messaggistica del Governo franc...
Il remake di The Legend of Zelda: Ocarin...
Costano meno dei Mac mini e vanno molto ...
Meta usa i tuoi acquisti e giochi su sit...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 08:53.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v