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

    [Java]-[NetBeans] Problema comunicazione tra due JFrame.

    Salve a tutti,
    entro subito nel merito, sto realizzando una applicazione java cn netbeans.
    Ho creato un Jframe dove importo dei file xml e successivamente con un tasto "avvia" faccio partire degli algoritmi che leggono questi file xml e producono dei calcoli. Quello che non riesco a fare è mettere in pausa questo processo (scaturito dll'evento Jbutton) per poter avviare un altra jframe. in questo senso:

    premo tasto "avvia"{
    algoritmo_1
    algoritmo_2
    algoritmo_3
    Avvia nuova Jframe
    [attendi risutlato scaturito da jframe]
    algoritmo_4
    algoritmo_5
    }

    quando avvio la nuova Jframe il processo continua con gli algoritmi 4 e 5 senza aspettare i risultati scaturiti dalla jframe (anche in questo caso si tratta di attendere eventi Jbutton) chiamata che mi servirebbero per gli algoritmi che seguono.
    ho usato il Thread.wait() ma mi restituisce svariati errori.
    quello che mi servirebbe è una specie di WaitForClose() di C o altro che faccia fermare il processo fino al .dispose() dell'altra jframe.

    Spero di essere stato sufficentemente chiaro e confido nella vostra competenza

    Grazie in anticipo.
    Ciao

  2. #2
    Non l'ho mai usato, ma per quel poco che ne so potrebbe fare al caso tuo.
    Potresti istanziare un ThreadGroup con i primi 3 thread e controllare, per poter istanziare i successivi 2 processi, lo stato di questo gruppo con il metodo activeCount che restituisce il numero di thread ancora attivi.

    http://java.sun.com/j2se/1.4.2/docs/...readGroup.html
    "Na' sedia te vojo tirà!"

  3. #3
    Innazitutto grazie della risposta
    ho letto e visto esempi con il ThreadGroup, però a quanto ho capito dovrei creare dei gruppi di Thread (nel mio caso associati a singoli algoritmi) all'interno di di un metodo che ascolata un evento. il problema è che questi algoritmi vengono lanciati dalla mia applicazione in base a cosa leggo sui file xml quindi no è una gestione statica tipo:

    Gruppo_A (alg_1, alg_2, alg_3)
    Gruppo_B (alg_4, alg_5)
    //quindi verrebbe una cosa del genere (secondo l'esempio che ti avevo proposto prima):
    GruppoA.start()
    new jframe
    GruppoB.start()

    pero la gestione della mia applicazione è "dinamica", quindi mi servirebbe capire come mettere una pasusa dopo un qualsiasi algoritmo, avviare una jframe, aspettare che si chiuda la jframe, ritornare al processo principale e continuare. Purtroppo non posso creare gruppi (credo :master: )
    cmq grazie mille

  4. #4
    Credo di non aver ben capito il tuo caso però provo a chiederti questo: hai provato a utilizzare qualcosa di persistente che faccia da semaforo ai vari algoritmi?
    Mi spiego meglio. Potresti utilizzare qualcosa come un database oppure un file xml che permetta di salvare, per ogni algoritmo, un flag che avverta l'altro thread di poter partire con le proprie funzioni.

    Spero di essere stato chiaro ma soprattutto di averti dato la giusta indicazione.
    "Na' sedia te vojo tirà!"

  5. #5
    No non uso database purtroppo.
    ora sto vedendo esempi di applicazioni con semafori e Thread x capire meglio come funzionano.
    la vedo dura
    grazie ancora

  6. #6
    ho provato questo:

    codice:
            NuovaFinestra po = new NuovaFinestra();
            po.pack();
            po.setVisible(true);
    while (po.isVisible()){
    
    
            if (po.cmd == "YES"){
            System.out.println("HA PREMUTO SI");
            } else if (po.cmd == "NO"){
                System.out.println("HA PREMUTO NO");
    
            }
    }
    pero appare la finestra chiamata vuota e il processo si blocca....
    cmd è una string dell'altra finestra a cui passo il volore del tasto con getActionCommand();

  7. #7
    Originariamente inviato da damiantos
    ho provato questo:

    codice:
            NuovaFinestra po = new NuovaFinestra();
            po.pack();
            po.setVisible(true);
    while (po.isVisible()){
    
    
            if (po.cmd == "YES"){
            System.out.println("HA PREMUTO SI");
            } else if (po.cmd == "NO"){
                System.out.println("HA PREMUTO NO");
    
            }
    }
    pero appare la finestra chiamata vuota e il processo si blocca....
    cmd è una string dell'altra finestra a cui passo il volore del tasto con getActionCommand();
    Non capisco... che relazioni può avere l'oggetto po con un altro processo visto che po viene istanziato come new?
    "Na' sedia te vojo tirà!"

  8. #8
    l'oggetto po è una nuova jframe che fa una domanda a cui rispondi con si o no (che sono due tasti della jframe) dopo che si risponde il jfame viene chiuso con dispose() e a seconda della risposta si/no il processo principale elabora alcune cose.
    spero di essere stato chiaro, grazie ancora

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.