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

    Gestire La Chiusura Di Una Frameview

    CIAO A TUTTI STO REALIZZANDO UN'APPLICAZIONE USANDO DELLE FRAMEVIEW CREATE ATTRAVERSO DELLE DESKTOP APPLICATIONS CHE INTERAGISCONO CON DEI JFRAME. TUTTO FUNZIONA ECCETTO UNA COSA, QUANDO CHIUDO LE FRAMEVIEW MI SI CHIUDE TUTTO IL PROGRAMMA. MENTRE RIESCO FACILMENTE A GESTIRE LA QUESTIONE CON I JFRAME (BASTA USARE HIDE AL POSTO DI EXIT_ON_CLOSE) NON HO IDEA DI COME FARE CON LE FRAME VIEW E VI ASSICURO CHE NE HO PROVATE TANTE...

    PER FARE UNA PROVA BASTA CREARE UNA DESKTOP APPLICATION E RICHIAMARE IL METODO MAIN DA UN PULSANTE DI UN JFRAME CREATO SUCCESSIVAMENTE. VEDRETE CHE CHIUDENDO LA DESKTOP APPLICATION SI CHIUDE TUTTO IL PROGRAMMA MENTRE IO VORREI CHE LA JFRAME RIMANGA APERTA.

    C'E' QUANCUNO CHE SI E' GIA' IMBATTUTO IN QUESTO PROBLEMA?

    CIAO.

  2. #2
    Magari riscrivendo la tua richiesta in maniera più consona. Vedi altre persone che scrivono in maiuscolo per caso? Non è usando il maiuscolo metti in rilievo la tua richiesta, sai, è semplicemente una questione di educazione.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    Originariamente inviato da satifal
    Magari riscrivendo la tua richiesta in maniera più consona. Vedi altre persone che scrivono in maiuscolo per caso? Non è usando il maiuscolo metti in rilievo la tua richiesta, sai, è semplicemente una questione di educazione.
    Beh scrivere in maiuscolo equivale ad urlare, non penso chiedi le cose urlando.

    a parte che non ho capito come funziona in generale, cioè tu hai una specie di monitor da cui fai partire altre applicazioni?
    Se è così ricorda che quando avvii un processo, spesso questo resta legato al padre, quindi la terminazione del padre equivale alla terminazione di tutti i figli (ed è quello che succede a te). Dovresti impedire la chiusura finché hai figli in circolazione, specie se questi comunicano attraverso il padre. E' una questione che riguarda la gestione dei processi, capita quella la differenza sta nel tipo di processo che fai partire

  4. #4

    Scusate

    Scusate non volevo urlare è solo che risento della mia impostazione da ragionoiere sapete in partita doppia si scrive tutto in maiuscolo per rendere le cose più leggibili non pensavo fosse così aggressivo grazie comunque per la risposta provo subito.

    Ciao.

  5. #5

    CI SONO QUASI!!!

    Sono molto vicino alla soluzione del problema...
    Dunque la classe qui sotto:

    package bank;


    import java.util.EventObject;
    import org.jdesktop.application.Application;
    import org.jdesktop.application.SingleFrameApplication;

    public class BANKApp extends SingleFrameApplication {

    @Override protected void startup() {
    show(new BANKView(this));

    }


    @Override protected void configureWindow(java.awt.Window root) {
    }

    public static BANKApp getApplication() {
    return Application.getInstance(BANKApp.class);
    }


    public static void main(String[] args) {
    launch(BANKApp.class, args);
    }

    @Override
    public void exit(EventObject event) {

    }

    }

    chiama una FrameView che estende la classe BANKView:
    FrameView public class BANKView extends FrameView {

    il problema è che questa non è l'unica frame view del programma, quando la chiudo però mi si chiude tutto il programma con tutti i frame e le frameview.

    Per evitare che mi si chiudesse tutto ho fatto quell'override che vedete alla fine della classe che ho postato cioè:
    @Override
    public void exit(EventObject event) { }

    Come potrete immaginare ora quella FrameView non mi si chiude più del tutto perchè in questo modo ho bypassato l'exit di default ma non gli ho detto di fare HIDE_ON_CLOSE. Ne ho provate parecchie ma non riesco ad arrivare alla fine della matassa.

    Se volete fare una prova per capire di cosa si tratta è molto semplice:
    se usate NetBeans create una nuova java desktop application scegliendo l'opzione desktop application. Vi creerà automaticamente una desktop application formata tra l'altro da una classe "app" che estende una classe SingleFrameApplication che chiama una classe View che estende una classe FrameView.
    Se provate ad aggiungere un JFrame al package e provate a chiamare con un new la classe main della applicazione che avete creato precedentemente questa si aprirà e se provate a chiuderla si spegnerà tutto il programma mentre io voglio che il JFrame con cui ho chimato l'applicazione rimanga aperto magari per chiamare un'alltra desktop application.

    spero di essere stato più chiaro dell'altra volte e soprattutto ho evitato il mio ragioneristico maiuscolo.

    grazie comunque.

    ciao.

  6. #6
    Devi settare la default close opration tramite il metodo setDefaultCloseOperation(). Di default essa è settata a EXIT_ON_CLOSE che dovrebbe equivalere ad un'operazione del tipo System.exit() che quindi chiude tutta l'applicazione. Modificandola a HIDE_ON_CLOSE dovresti ottenere ciò che chiedi.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  7. #7

    GRAZIE MILLE SEI FANTASTICO


    GRAZIE!!!!!!!

    Posto la soluzione funzionante:

    @Override
    public void exit(EventObject event) {
    this.getMainFrame().setDefaultCloseOperation(javax .swing.WindowConstants.HIDE_ON_CLOSE);

    }

    Grazie veramente è una settimana che sono dietro a questa stupidaggine.

    ciao.

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.