Pagina 3 di 3 primaprima 1 2 3
Visualizzazione dei risultati da 21 a 30 su 30
  1. #21
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Originariamente inviato da massimoborreca
    forse non è chiaro il mio problema!!!!
    io riesco a far tornare una stringa dalla classe B alla Classe A, tant'è che se gli dico di stamparla con System.out.println("stringa"); me lo fa!!!
    il fatto è che voglio che compaia automaticamente nella jTextField1 presente in A, e non lo fa!!!
    E noi torniamo a dirti che se tu crei un nuovo oggetto A e ne richiami un metodo che stampa in output è ovvio che l'output venga stampato... è ovvio che la stringa "passa" da un oggetto ad un altro... ma non è comunque lo stesso oggetto A su cui stai lavorando, ma un'altra istanza, diversa, invisibile, che nulla ha a che vedere con la finestra "principale".

    Prova ad aggiungere questa riga di codice e forse te ne renderai conto:
    codice:
    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
    A a = new A();
    a.Get(jTextField1.getText());
    a.setVisible( true );
    }
    Così facendo dovresti, come per magia, veder comparire un'altra finestra... perchè? Ovvio, perchè l'hai creata tu scrivendo A a = new A();

    E' un'altra finestra, del tutto identica alla prima, con le stesse funzioni della prima... ma non è la prima, è una seconda, diversa, finestra.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  2. #22
    ok, e allora come faccio a far si che ritorni alla classe A di partenza?!?!

  3. #23
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da massimoborreca
    ok, e allora come faccio a far si che ritorni alla classe A di partenza?!?!
    Ti è già stato detto almeno 3 volte

    Passa a B un riferimento all'istanza di A...
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  4. #24
    rieccomi...ancora un po di pazienza!!
    come faccio a passare a B un riferimento all'istanza di A???
    ve l'ho detto sto agli inizi, ma voglio capire e imparare!!!

  5. #25
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Classico passaggio di parametri tra classi

    codice:
    // ... nella classe A, dove costruisco l'oggetto B
    B b = new B( this );   // passo a B il riferimento a me stesso (this)
    
    ...
    
    // Nella classe B
    public class B ... {
    
       // Questa variabile conterrà il riferimento ad A
       // che mi verrà passato nel costruttore
       private A a;
    
       // Il costruttore riceve il riferimento ad un oggetto di tipo A
       public B(A a) {
          // Salvo il riferimento che mi è stato passato
          this.a = a;   // nota ancora il this per disambiguare
       }
    
       // All'interno della classe B userò il riferimento all'oggetto a
       public void actionPerformed(ActionEvent ae) {
          a.Get(jTextField1.getText());
       }
    }
    PS: un metodo che "imposta" qualcosa dovrebbe chiamarsi "setQualcosa" non "Get" (tra l'altro, in Java, i nomi dei metodi dovrebbero cominciare con la lettera minuscola: ti accorgerai dell'importanza di qualcosa quando prenderai in esame i JavaBeans).

    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  6. #26
    se nella classe A scrivo cosi

    codice:
    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
          B b = new B( this );
          b.setVisible(true);
        }
    non mi apre la classe B che io ho dichiarato, ma mi apre un frame vuoto

  7. #27
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Io mi auguro che tu non abbia sostituito il costruttore esattamente come l'ho fatto io (anche se temo proprio di sì, anzi, temo che tu abbia semplicemente aggiunto un nuovo costruttore, cosa che non ho detto di fare... i suggerimenti vanno letti, capiti ed applicati, non copincollati così di sana pianta), ma che tu abbia solo fatto una "modifica", ovvero l'aggiunta del parametro e il salvataggio del valore passato. Il resto del costruttore andava lasciato com'era. Quella modifica non apporta alcunchè di nuovo a livello visivo.

    Mi sa che hai bisogno di studiare meglio la programmazione ObjectOriented e, credimi, usando un IDE per farti auto-generare il codice non vai da nessuna parte in tal senso.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  8. #28
    beh se sapevo quello che facevo di sicuro non avrei chiesto aiuto a voi...è ovvio che devo ancora imparare molte cose, e penso che anche con la pratica sia molto meglio!!!
    percio dov'è che ho sbagliato? e come dovrei fare?

  9. #29
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Originariamente inviato da massimoborreca
    beh se sapevo quello che facevo di sicuro non avrei chiesto aiuto a voi...è ovvio che devo ancora imparare molte cose, e penso che anche con la pratica sia molto meglio!!!
    percio dov'è che ho sbagliato? e come dovrei fare?
    Te l'ho scritto. Dovevi lasciare il costruttore della classe B così com'era originalmente... solo dovevi aggiungerci il parametro e l'istruzione this.a = a;

    Fine.

    Poi andava modificata la parte di codice dove "mandi il testo" alla classe di partenza.

    Faccio prima a postarti un esempio completo, scritto a mano, senza tutta la schifezza degli IDE (se già non l'avessi detto: abbandona l'IDE... non hai ancora sufficiente dimestichezza per capire cosa fa lui e cosa dovresti fare tu):

    Classe A:
    codice:
    import java.awt.*;
    import javax.swing.*;
    import java.awt.event.*;
    
    public class A extends JFrame implements ActionListener {
       private JLabel lblTesto;
       private JButton cmdApri;
       private boolean aperto;
    
       public A() {
          Container c = getContentPane();
          c.setLayout( new BorderLayout() );
    
          aperto = false;
    
          JPanel jp = new JPanel( new BorderLayout() );
          lblTesto = new JLabel("Testo scritto: ");
          lblTesto.setHorizontalAlignment( JLabel.LEFT );
    
          cmdApri = new JButton("Apri");
          cmdApri.addActionListener( this );
    
          jp.add(lblTesto, BorderLayout.CENTER);
          jp.add(cmdApri, BorderLayout.EAST);
    
          c.add(jp, BorderLayout.NORTH);
    
          setTitle("Esempio - Finestra principale");
          setSize(800, 600);
          setDefaultCloseOperation( EXIT_ON_CLOSE );
          setLocationRelativeTo( null );
          setVisible( true );
       }
    
       public void setTesto(String str) {
          lblTesto.setText("Testo scritto: " + str);
          aperto = false;
       }
    
       @Override
       public void actionPerformed(ActionEvent ae) {
          if ( !aperto ) {
             B b = new B( this );
             aperto = true;
          }
       }
    
       public static void main(String[] args) {
          A a = new A();
       }
    }
    Classe B:
    codice:
    import java.awt.*;
    import javax.swing.*;
    import java.awt.event.*;
    
    public class B extends JFrame implements ActionListener {
       private JTextField txtTesto;
       private JButton cmdInvia;
       private A a;
    
       public B(A a) {
          this.a = a;
    
          Container c = getContentPane();
          c.setLayout( new BorderLayout() );
    
          JPanel jp = new JPanel( new BorderLayout() );
          txtTesto = new JTextField();
          cmdInvia = new JButton("Invia");
          cmdInvia.addActionListener( this );
    
          jp.add(txtTesto, BorderLayout.CENTER);
          jp.add(cmdInvia, BorderLayout.EAST);
    
          c.add(jp, BorderLayout.NORTH);
    
          setTitle("Esempio - Finestra secondaria");
          setSize(300, 200);
          setDefaultCloseOperation( DO_NOTHING_ON_CLOSE );
          setLocationRelativeTo( null );
          setVisible( true );
       }
    
       @Override
       public void actionPerformed(ActionEvent ae) {
          a.setTesto( txtTesto.getText() );
          dispose();
       }
    }
    Buono studio.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  10. #30
    grazie della risposta!!!
    il tuo codice funziona alla perfezione...ovviamente!!!!!
    il fatto è che sto scrivendo una tesi e sto creando un programma per il calcolo del fabbisogno termico di un edificio, sono un ingegnere meccanico e mi sono messo in un mondo che non mi appartiene. fino ad adesso ho usato netbeans, e mi sono trovato benissimo!!!certo il mio programma non era perfetto dal punto di vista di programmazione ma faceva il suo lavoro; finche non mi sono trovato a dover usare due jFrame e farli comunicare tra di loro!!!
    percio adesso devo riuscire a capire il codice che mi hai mandato e riproporlo in netbeans!!!
    non posso riscrivere tutto a mano...è una roba infinita!!! sono piu di 9000 righe di codice autogenerato, che magari con il tuo metodo saranno pure di meno, ma sono sempre un'enormità!!!!
    mi basta risolvere questo problema e il gioco è fatto!!!!

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.