Trasmissione dei dati tra classi

0

Una domanda simile a questa è stata già chiesta e verrà richiesta di nuovo, ne sono certo. Ho passato un po 'di tempo su google e ho cercato di risolverlo da solo, ma sono in un vicolo cieco.

Quello che sto cercando di ottenere è di implementare una schermata di ricerca del database per un'applicazione a cui sono stato affidato il compito di creare.

Quello che sto facendo è caricare un JFrame con JPanels attraverso un cardlayout. Su alcuni di questi JPanel avrò un pulsante che chiama un altro JFrame che cercherà un DB e caricherà il set di risultati in una tabella visualizzata sul frame. La ricerca viene eseguita solo dopo che l'utente ha digitato i dati di ricerca e premuto la ricerca. Lo schermo deve essere smaltito e restituire i valori una volta che l'utente ha selezionato una riga nella tabella e premuto un altro pulsante.

Ho creato tutti i componenti della GUI e la funzionalità di ricerca DB funziona. Il problema che ho sta restituendo il valore.

Al momento ho l'oggetto Search JFrame creato da JPanel che ha il pulsante, ma tutti i tentativi fatti per ottenere i dati dal frame di ricerca hanno dato risultati nulli.

C'è un modo per restituire un valore in questo modo e, in caso affermativo, come?

Ho provato i metodi getter / setter, ma ovviamente poiché i risultati iniziali delle variabili sono nulli, restituisce null. Ho provato a collegare il risultato al tavolo con lo stesso risultato. (In realtà è tornato -1, ma si tratta solo di spaccare i capelli). Ho provato a cambiare la schermata di ricerca in un JDialog mentre leggo che può fermare il codice in esecuzione mentre si attende una risposta. Ho provato vari metodi per verificare se la schermata di ricerca era abilitata / visibile e per trattenerli.

Tutto inutilmente.

Qualsiasi aiuto è apprezzato.

    
posta Fos 28.03.2014 - 20:52
fonte

1 risposta

3

Senza approfondire i dettagli ...

Un'alternativa è avere un modello comune condiviso da entrambi i frame. Quando si apre la finestra per consentire all'utente di eseguire la ricerca, si passa l'oggetto del modello che deve essere condiviso tra i due componenti dell'interfaccia utente. Quando si popola questo modello e si ritorna al fotogramma principale, è possibile utilizzare il modello condiviso per aggiornare qualsiasi vista.

Una seconda alternativa è usare callback con un pattern di osservatore. In questo modo, il frame principale si registra con un listener per ricevere eventi e quando si apre il frame di ricerca, si passa il listener ad esso in modo che quando l'utente esegue una ricerca, è possibile notificare a tutti gli oggetti in ascolto i risultati.

    
risposta data 28.03.2014 - 21:29
fonte

Leggi altre domande sui tag