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

    [JAVA] Problema classe/metodo che interagisce con altra classe (GUI)

    Salve a tutti!
    Eccomi di nuovo qui, con un altro -forse piccolo- problemuccio
    Sì, okay, il titolo non è molto esplicativo, in compenso cerchero' di spiegarmi nel miglior modo possibile qui.

    Io ho un metodo popola() in una classe B, appartenente alla classe A, che dovrebbe interagire con quest'ultima.
    Praticamente, il metodo popola, lanciato dalla classe B, deve popolare (è quello che fa il metodo) alcuni campi della classe A.
    Ho operato così:

    codice:
    public class B {
          // inizializzazione componenti, gui e roba varia
          
          public A a = new A();
    
          // altro codice
          
          a.popola(); //qui dovrebbe popolarmi alcuni campi della classe A
             
    }
    ma, ovviamente, non funziona.
    Qualcuno sa dirmi come fare a far interagire queste due GUI?

    Grazie mille in anticipo!
    CPU: i5 @ 3.0 GHz | Scheda Video: SAPPHIRE ATI HD5670 | Motherboard: ASUS P7P55D | RAM: 4GB Corsair DDR3 | Case: Cooler Master Centurion 534 Lite Nero | HD: WD SATA 500 GB | Monitor: ASUS 22" 22T1E Full HD | OS: Windows 7 Pro. x64

  2. #2
    Utente di HTML.it L'avatar di yuno
    Registrato dal
    Apr 2010
    Messaggi
    62
    Ciao, vorrei aiutarti ma sinceramente quello che chiedi non è molto chiaro inquanto non spieghi molto bene quello che succede... cioe il metodo "a.popala()" che visibilità ha? perche non funziona ti da errore a runtime ti da errore di compilazione oppure non da alcun errore ma dovrebbe mostrare a video delle cose che poi non mostra? a che tipo di oggetto è? cosa estende e b altrettanto... potrebbe essere un problema di repaint, prova chiamare validate() sul frame principale dopo che hai fatto tutte le operazioni magari va

  3. #3
    Ciao! Innanzi tutto, grazie per la risposta!
    Avevo pensato anch'io al .validate, ma non ha funzionato

    Per quanto riguarda il mio problema, cerchero' di spiegarmi meglio, magari il problema sta altrove :\

    Allora, io ho una JTable in una GUI ('B'), da lì ottengo un campo, e, una volta selezionato e averci cliccato due volte sopra, mi dovrebbe popolare alcune textbox presenti nella GUI 'A' tramite il metodo presente in 'A': popola().
    Non da errori, non succede praticamente nulla!!

    Questo è il codice dell'evento sulla JTable :
    codice:
     private void tabellaMouseClicked(java.awt.event.MouseEvent evt) {
            if(evt.getClickCount() == 2 && evt.getButton() == MouseEvent.BUTTON1)
            evt.getSource();
            
           Object obj = (tabella.getValueAt( tabella.getSelectedRow(), tabella.getSelectedColumn()) );
           
            a.popola(obj);
                
        }
    Meglio?

    CPU: i5 @ 3.0 GHz | Scheda Video: SAPPHIRE ATI HD5670 | Motherboard: ASUS P7P55D | RAM: 4GB Corsair DDR3 | Case: Cooler Master Centurion 534 Lite Nero | HD: WD SATA 500 GB | Monitor: ASUS 22" 22T1E Full HD | OS: Windows 7 Pro. x64

  4. #4
    Utente di HTML.it L'avatar di yuno
    Registrato dal
    Apr 2010
    Messaggi
    62
    è molto meglio, anche se il codice sebra giusto, quindi dovrebbe funzionare, magari hai fatto qualche errore di distrazione prima tipo:
    non hai registrato l'ascoltatore del mouse alla tabbella, il metodo popola non funziona, etc.
    Ovviamente non vendendo tutta la classe, non posso aiutarti che per ipotesi... quindi mi sa che ti conviene mettere delle stampe per vedere se il metodo popola viene chiamato e cercare altrove.

    PS.
    il private davanti al metodo dell'evento mi puzza un po...
    prova a aggiungere questo anche per provare:
    codice:
    tabella.addMouseListener(new MouseAdapter() {
    
                public void mouseClicked(MouseEvent evt) {
                    if(evt.getClickCount() == 2 && evt.getButton() == MouseEvent.BUTTON1)
                    evt.getSource();
                    Object obj=(tabella.getValueAt(tabella.getSelectedRow(),
                                      tabella.getSelectedColumn()) );
    
                    a.popola(obj);
                }
            
            });

  5. #5
    Ho ricontrollato e fatto le stampe.
    Tutto giusto

    Non capisco come mai non mi popoli le TextField che ho nell'altra gui!
    Ho provato anche a mettere un validate(); in fondo a popola(); ma niente.

    Altre idee?
    CPU: i5 @ 3.0 GHz | Scheda Video: SAPPHIRE ATI HD5670 | Motherboard: ASUS P7P55D | RAM: 4GB Corsair DDR3 | Case: Cooler Master Centurion 534 Lite Nero | HD: WD SATA 500 GB | Monitor: ASUS 22" 22T1E Full HD | OS: Windows 7 Pro. x64

  6. #6
    Utente di HTML.it L'avatar di yuno
    Registrato dal
    Apr 2010
    Messaggi
    62
    se il metodo "popola" viene chiamato l'errore dovrebbe essere li....
    se ti va di postarlo magari gli do uno sguardo anche io altro non posso fare

  7. #7
    Up?

    Praticamente devo, una volta cliccato due volte su una riga di una jTable della seconda GUI, tramite un evento mouselistener, riuscire ad estrapolare i dati contenuti dalla riga selezionata. Fin qui tutto okay, e funziona. Il problema sorge quando questi dati deve andare ad inserirli in delle textfield contenute in un altro jframe.
    Non da errori, solo che non popola.

    CPU: i5 @ 3.0 GHz | Scheda Video: SAPPHIRE ATI HD5670 | Motherboard: ASUS P7P55D | RAM: 4GB Corsair DDR3 | Case: Cooler Master Centurion 534 Lite Nero | HD: WD SATA 500 GB | Monitor: ASUS 22" 22T1E Full HD | OS: Windows 7 Pro. x64

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    Con del codice si comprenderebbe meglio.
    In linea di massima devi comunque avere un riferimento all'oggetto della classe a cui vuoi passare i dati.
    Però fai bene attenzione (come ti è stato fatto notare) che il metodo è public void mouseClicked(MouseEvent me);.

    Senza codice è difficile dirti dov'è l'errore.

  9. #9
    Uhm... questo è il famoso metodo 'popola()':

    codice:
    -cut
    mentre il codice che rimanda a questo e usa il metodo e' 6 post indietro

    Ciao

    edit -- ho risolto implementando una JDialog nel frame principale, tanto per una JTable basta

    Grazie mille a tutti comunque per l'aiuto!
    CPU: i5 @ 3.0 GHz | Scheda Video: SAPPHIRE ATI HD5670 | Motherboard: ASUS P7P55D | RAM: 4GB Corsair DDR3 | Case: Cooler Master Centurion 534 Lite Nero | HD: WD SATA 500 GB | Monitor: ASUS 22" 22T1E Full HD | OS: Windows 7 Pro. x64

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.