Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 16 su 16
  1. #11
    Proprio perchè sei gia in un thread principale in quel modo addormenterai tutto l'oggetto e non una parte di esso, per poterlo fare devi implementare Runnable e creare per così dire un "sottothread" che non sia appunto quello principale.

    Se sei in difficoltà con il tuo codice prova a farmene vedere una parte di tanto per dirti come devi fare.


  2. #12
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    883
    Ecco il codice che riguarda l'azione che viene lanciata quando si preme sul bottne newFile

    class NewAction extends AbstractAction {

    public NewAction() {
    super(newAction);
    }

    public void actionPerformed(ActionEvent e) {

    closeFile();
    Thread.sleep(1000);
    makeNewFile();

    }//end action create new file

    }//end classe NewAction

    /**
    *close the current open file
    */
    public void closeFile() {

    //if the file is editable, close it!
    if (editor.isEditable()) {
    System.out.println("close");
    editor.setEditable(false);
    editor.setBackground(new Color(204,204,204));

    }//end if

    }//end method closeFile

    public void makeNewFile() {

    //if the file is not editable i make a new file
    if (!editor.isEditable()) {
    editor.setBackground(Color.white);
    editor.setEditable(true);
    }

    }

  3. #13
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    883
    quello che voglio fare è che dopo l'azione di chiusura e prima dell'azione di apertura nuovo file, trascorra un secondo di attesa

    con il codice sopra scritto il programma invece reagisce cosi dopo che ho premuto il pulsante newFile

    attende 1 secondo
    poi chiude il file
    poi crea un nuovo file

    invece voglio

    chiude il file
    attende 1 secondo
    poi crea un nuovo file

  4. #14
    Guarda se così ti funziona


    class NewAction extends AbstractAction implements Runnable {

    Thread t;
    public NewAction() {
    super(newAction);
    }

    public void actionPerformed(ActionEvent e) {
    t = new Thread(this);
    t.start(); // questo richiama il metodo run()


    }//end action create new file

    public void run() // ridefinisco run di Runnable
    {
    try{
    closeFile();
    t.sleep(1000); // 1000 UN SECONDO, 2000 DUE SEC ECC..
    makeNewFile();
    }
    catch(InterruptedException i)
    {
    i.getMessage();
    }
    }

    }//end classe NewAction

    /**
    *close the current open file
    */
    public void closeFile()
    {

    //if the file is editable, close it!
    if (editor.isEditable())
    {
    System.out.println("close");
    editor.setEditable(false);
    editor.setBackground(new Color(204,204,204));

    }//end if

    }//end method closeFile

    public void makeNewFile()
    {

    //if the file is not editable i make a new file
    if (!editor.isEditable())
    {
    editor.setBackground(Color.white);
    editor.setEditable(true);
    }

    }



    Ho cercato di indentare il codice ma non non lo fa quando di invio la risposta pazienza !!

  5. #15
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    883
    funziona mitico!!!!

    come mai così funziona e mettendo semplicemente Thread.sleep nella action del pulsante non funziona?

  6. #16
    Perchè se non crei un nuovo Thread java si riferisce a quello principale generato dal main per capirci o dall'init ed allora anche se hai messo il Thread.sleep in mezzo fra due istruzioni java ti addormenta tutta la classe e poi esegue le istruzioni.

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.