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

    Bloccare codice fino al click di un tasto

    Ragazzi ho un leggero problema! XD
    Il mio prof all'uni non vuole che usiamo la JOptionPane per visualizzare le inputdialog, e vuole che ci creiamo noi una piccola finestra dove inserire ad esempio il nome di un file da aprire e/o da caricare.
    Allora io cosa faccio, mi creo una bella classe con dentro implementato la actionlistener per gli ascoltatori degli eventi ed estendo la classe ad un jframe e nel costruttore mi costruisco la mia bella finestrella. Fin qui tutto bene, la crea, e riesco a gestirla completamente.
    Ora viene il bello.
    Se la metto nel main facendo ad esempio:
    codice:
    IG_MiniFrame frmCorridoi = new IG_MiniFrame("Numero Corridoi!", 300, 200, 260, 100, "Numero Corridoi:");
    IG_MiniFrame frmFile = new IG_MiniFrame("Numero File!", 300, 200, 260, 100, "Numero File:");
    IG_MiniFrame frmPosti = new IG_MiniFrame("Numero Posti!", 300, 200, 260, 100, "Numero Posti:");
    il programma ovviamente, continuerà ad eseguire il codice sottostante, senza fermarsi ad aspettare che io inserisco un dato valore nel campo JTextField.
    Ho ovviato a questa soluzione con una cosa ORRENDA, BRUTTISSIMA, che va contro il mio modo di programmare, ma ho trovato solo questo metodo, ed è quello di mettere un ciclo while che cicla fino a quando non premo il pulsante ok della finestra che mi cambierà una variabile booleana a true e farà continuare il main ed aprire un altra finestra:
    codice:
    IG_MiniFrame frmCorridoi = new IG_MiniFrame("Numero Corridoi!", 300, 200, 260, 100, "Numero Corridoi:");
            while(frmCorridoi.getComplete()==false){}
            IG_MiniFrame frmFile = new IG_MiniFrame("Numero File!", 300, 200, 260, 100, "Numero File:");
            while(frmFile.getComplete()==false){}
            IG_MiniFrame frmPosti = new IG_MiniFrame("Numero Posti!", 300, 200, 260, 100, "Numero Posti:");
            while(frmPosti.getComplete()==false){}
    Quella che vi chiedo, è: esiste un modo più "bello" di programmare una cosa del genere? bloccare il codice fino all'inserimento del valore nel campo text?
    Ci vorrebbe un bel metodo nell'actionperformed tipo:
    main.continue(); XD
    e nel costruttore ovviamente main.stop(); >_>

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,161
    scusa non ho capito che devi fare, ma le option pane funzionano bene e non hanno quei problemi che dici tu.

    hai letto qui ?

  3. #3
    Si lo so
    Ma come ho detto sopra il mio prof non vuole che le usiamo.. lo fa per farci imparare a costrutire finestre in modo rapido..
    Quindi q

  4. #4
    Si lo so
    Ma come ho detto sopra il mio prof non vuole che le usiamo.. lo fa per farci imparare a costrutire finestre in modo rapido..
    Quindi quando io mi creo la mia finestra nel main lui invece di aspetare che prema inmvio(come fa la JOptionPane) continua ovviamente ad eseguire le istruzioni del main.
    Io vorrei sapere seesiste un metodo per bloccare il codice fino a che non premo invio, invece di usare il ciclo while dopo la finestra.

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,161
    esiste una Jdialog modale che si chiude al verificarsi di una condizione.
    Significa che apri il dialog in modalità modale, fai le tue cose, la chiusura la fai DOPO aver letto correttamente l'input e in quel caso chiudere quel dialog ti fa tornare alla finestra principale.
    Questo simula il comportamento del JOptionPane, non si comporta cmq allo stesso modo.
    Aprire una nuova finestra significa che le due hanno in generale vita indipendente (restano cmq legate) e per realizzare quel meccanismo devi aggiungere meccanismi di sincronizzazione.

  6. #6
    Non entro nello specifico dei "mille modi migliori per ovviare al tuo problema", ma se vuoi mettere in "stop il main" la soluzione c'è ovvero utilizzare il multithreading.

    Ovvero metti la parte relativa al caricamento dei dati su un thread a parte ed il thread principale lo metti in stop finchè non finisci di caricare i dati.

    Non è il massimo ma quel "main.continue" da te descritto mi sembrava molto una richiesta di aiuto su come usare i thread
    "Estremamente originale e fantasioso" By darkiko;
    "allora sfiga crepuscolare mi sa che e' meglio di atmosfera serale" By NyXo;
    "per favore, già è difficile con lui" By fcaldera;
    "se lo apri te e invece di "amore" ci metti "lavoro", l'effetto è lo stesso" By fred84

  7. #7
    SI in effetti anche io poi ho pensato ad una cosa del genere... ma ho ovviato per le JDialog.. emi sono costruito una classe che estende JDialog ed ho messo la modal a true in modo che fino a quando non chiudo la finestra appena aperta il programma si ferma e riprende apopena premo ok ^^
    Grazie mille cmq per gli aiuti!

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 © 2021 vBulletin Solutions, Inc. All rights reserved.