Visualizzazione dei risultati da 1 a 7 su 7

Discussione: Thread e JFrame

  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    132

    Thread e JFrame

    Ciao a tutti, ho un problema "nell'ascoltare" una finestra.
    Per esempio, ho una jtable e vi devo visualizzare elementi scelti in una finestra esterna.
    Non riesco a richiamare la Jtable dalla finestra esterna perchè non è static, allora ho proceduto con i Thread


    codice:
    // apre la finestra
    
    public void apriTabella(){
    
    programmaMain.data jd1 = new programmaMain.data();
                        jd1.setAlwaysOnTop(true);
                        jd1.setLocation(400, 400);
                        jd1.setVisible(true);
                        dataSel=false;
    threadTabella d=new threadTabella();
    d.start();
    }
    
    
    // aspetta la scelta della data
    public class threadTabella extends Thread{
        public threadTabella(){
                }
                @Override
        public void run() {
    //quando scelgo data su finestra imposto dataSelezionata=true
            while (dataSelezionata==false) {
            }
    // codice tabella
     }
    Sul computer dove ho installato netbeans, funziona perfettamente, mentre su tutte le altre macchine, il Thread non riparte, cioè quando imposto dataSelezionata=true dalla finestra il while non finisce.
    Immagino che non sia il modo migliore per gestire il problema, sto guardando anche synchronized , ma ancora non l'ho ben capito.
    Qualche suggerimento ?

    Grazie.

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    mi spieghi meglio cosa devi fare?
    A quanto ho capito hai finestra A (JFrame frameA) e finestra B (JFrame frameB), la prima contiene la JTable e devi, in funzione di un evento da frameB, aggiornare frameA?
    Ma frameA e frameB sono lanciate dallo stesso processo? (cioè una è figlia dell'altra)?

    Io penserei a gestire questa cosa con gli eventi

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    132
    Il codice che ho postato è tutto nella finestra "madre", la seconda finestra è chiamata dalla prima per far effettuare delle scelte all'utente, e si chiude subito, mentre la finestra madre rimane sempre aperta.
    Gestisco alla stessa maniera anche i File Chooser, per esempio.

    Grazie.

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    i file chooser sono gestiti in modo differente.
    Secondo me c'è qualche problema a livello progettuale: tu per prendere una scelta dell'utente usi un jframe, perché non usi un JOptionPane che

    1. chiedi che valore prendere
    2. ti memorizzi la risposta tipo stringa
    3. usi quella per generare l'evento che ti crea la tabella.

    Non hai bisogno di tante cose (soprattutto di una nuova frame durante il load che è brutta da vedere/gestire), non ti poni problemi con i thread (visto che sei nello stesso thread che ha generato il frame e l'evento viene gestito in maniera opportuna), è più consono alla logica java/interfacce grafiche in generale.

    Per come sono abituata a fare io, non farei nemmeno la scelta iniziale, si carica un'opzione di default e si chiede un'azione esplicita per cambiare le cose.

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    132
    Bello e comodo, grazie, risolve molti dei miei problemi ma non tutti.
    Ho bisogno anche di "pagine" complesse, dove poter inserire liste, o combo, o tabelle, tramite i quali effettuare scelte, che poi vengono visualizzate sulla tabella principale.
    Se ho capito bene quindi, consigli di aprire queste pagine nell'applicazione, e non su jFrame secondari ?


    Grazie.

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    ti consiglio di vedere bene l'organizzazione, perché un'applicazione che chiede molti parametri all'utente per funzionare in generale non è ben fatta (regole di interazioni uomo/macchina).
    Applicazioni con molti parametri/molte scelte non sono ottimali, anche se ovviamente non è detto che non ci siano.
    Devi organizzare in modo che il tuo frame abbia in basso la tabella e nell'altra metà dello schermo abbia i comandi principali per scegliere le opzioni, ma solo le più comuni perché considera sempre dei default.

    Scelte più complesse le fai con il pulsante/opzione "advanced" e successivamente apri un JDialog per visualizzare le scelte.
    Come noti fin qui ti ho parlato di organizzazione dell'applicazione in modo da semplificare il lavoro a te, sfruttare le API java per benino e ridurre la complessità per l'utente finale

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    132
    Sei molto gentile, capisco cosa dici, e hai ragione.
    Sto sostituendo tutte le finestre di scelta con JOptionPane, molto utile grazie ancora.
    Ma la mia è una applicazione di inserimento dati : )
    1 o 2 finestre dovrei lasciarle esterne.
    Se non c'è maniera cercherò di farla stare tutta nella finestra principale, ma era comodo per l'utente vedere la tabella mentre compila il modulo di inserimento.

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.