PDA

View Full Version : [JAVA] Passare dati tra JFrame


Wall4c3
28-07-2009, 14:43
Ciao a tutti!

ho due classi mettiamo, A e B, che estendono JFrame.

Premendo un Bottone su A appare il JFrame B.
Su B faccio delle cose che vanno a modificare una JComboBox che è in A.
Per far ciò passo al costruttore di B il riferimento alla JComboBox che devo modificare, ovvero


class B extends JFrame {
private JComboBox parentBox;

public B(JComboBox cBox) {
parentBox = cBox;
}
}


su A richiamo B facendo new B(myJComboBox).

è giusta come soluzione? esistono migliori? Grazie :)

banryu79
28-07-2009, 15:13
è giusta come soluzione? esistono migliori? Grazie :)
Cosa intendi per "giusta"?
Se quello che hai fatto funziona e risolve il tuo problema, allora è una soluzione per definizione.
Una soluzione non può mai essere sbagliata: in quel caso non è una soluzione, no? ;)

Per quanto riguarda la possibilità che esitano solouzioni "migliori", non saprei, io al limite vedo un'alternativa: implementare B come estensione di JDialog e renderla modale.

La differenza è che con la tua soluzione l'utente può continuare a interagire con A anche con B aperta, e la comboBox in A si aggiornerà con le modifiche di B non appena in B l'interazione con l'utente scatena l'operazione di modifica; mentre con la versione in cui B è una JDialog modale di A l'utente non può tornare a interagire con A e vedere le modifiche al comboBox finchè non ha chiuso B.

Wall4c3
28-07-2009, 17:39
intendevo magari c' era qualcosa di più elegante :D
cmq Grazie :)

franksisca
28-07-2009, 18:35
per la serie "spariamo col cannone alla mosca" potresti pensare all'utilizzo di un monitor che condivide informazioni di entrambi le classi...

oppure passare alla classe B un riferimento alla classe A e quindi "far fare il lavoro sporco ad A" senza da B toccare niente.

ma, come detto, se la tua soluzione va bene...hai risolto :D

morskott
28-07-2009, 19:27
La soluzione tua va bene, se vogliamo essere pignoli allo spasimo però esponi alla classe B qualcosa che è sotto il controllo della classe A, cioè il JComboBox, così crei una dipendenza di future implementazioni (se poi cambierai A togliendo o modificando il jcombobox dovrai toccare pure B), se invece ad A aggiunge un metodo che fa quello che fai fare a B e a B passi l'oggetto A che quando cambia la jcombobox invece chiama il metodo su A gsarantisci che alla modifica di A non devi starti a preoccupare di come B utilizza il jcombobox, ma son finezze!!!