Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2015
    Messaggi
    103

    passare stringa da un jpanel ad un altro

    salve a tutti, mi serve una mano, vorrei sapere come passare una stringa da un jpanel ad un'altro in swing,mi spiego meglio, aperto il panel2 l'utente deve scegliere se continuare o no, se si allora risposta="SI" se no risposta="NO", (e fin qui ci siamo) poi però mi servirebbe passare "risposta" dal panel2 al panel1, ho provato a creare un'oggetto di panel2 ma quando prendo il contenuto di risposta in panel1(tramite variabile o metodo) me lo segna a null, ma in panel2 risposta è piena

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2014
    residenza
    Padova
    Messaggi
    361
    Prova a postare il codice incriminato: di per sè quello che tu dici non dovrebbe causare problemi.

    Attento però a questo: hai detto che provi a creare un oggetto di panel2 quando vuoi "passare" la stringa a panel1, allora se risposta è una variabile di istanza senza un valore di default è normale che creando una nuova istanza di panel2 essa sia uguale a null.

    Dalla tua spiegazione comunque sembra tutto un po' confuso.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2015
    Messaggi
    103
    Quote Originariamente inviata da Ansharja Visualizza il messaggio
    Prova a postare il codice incriminato: di per sè quello che tu dici non dovrebbe causare problemi.

    Attento però a questo: hai detto che provi a creare un oggetto di panel2 quando vuoi "passare" la stringa a panel1, allora se risposta è una variabile di istanza senza un valore di default è normale che creando una nuova istanza di panel2 essa sia uguale a null.

    Dalla tua spiegazione comunque sembra tutto un po' confuso.
    si, scusami veramente per il ritardo ma ho avuto problemi e non ho potuto rispondere prima,scusami ancora...

    comunque ho fatto un programmino molto ma molto scemo, per spiegarti cosa intendo

    codice:
    public class interfaccia1 extends javax.swing.JFrame {
    
        /**
         * Creates new form interfaccia1
         */
        public interfaccia1() {
            initComponents();
        }
    
        /**
         * This method is called from within the constructor to initialize the form.
         * WARNING: Do NOT modify this code. The content of this method is always
         * regenerated by the Form Editor.
         */
        @SuppressWarnings("unchecked")
        // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
        private void initComponents() {
    
            btn1 = new javax.swing.JButton();
    
            setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
    
            btn1.setText("out scelta");
            btn1.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    btn1ActionPerformed(evt);
                }
            });
    
            javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
            getContentPane().setLayout(layout);
            layout.setHorizontalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup()
                    .addGap(151, 151, 151)
                    .addComponent(btn1)
                    .addContainerGap(170, Short.MAX_VALUE))
            );
            layout.setVerticalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                    .addContainerGap(144, Short.MAX_VALUE)
                    .addComponent(btn1)
                    .addGap(133, 133, 133))
            );
    
            pack();
        }// </editor-fold>                        
    
        private void btn1ActionPerformed(java.awt.event.ActionEvent evt) {                                     
            // TODO add your handling code here:
            String scelta=null;
            interfaccia_scelta is=new interfaccia_scelta();
            is.setVisible(true);
            scelta=is.scelta;
            System.out.println(scelta);
            
        }                                    
    
        /**
         * @param args the command line arguments
         */
        public static void main(String args[]) {
            /* Set the Nimbus look and feel */
            //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
            /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
             * For details see http://download.oracle.com/javase/tu...feel/plaf.html 
             */
            try {
                for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                    if ("Nimbus".equals(info.getName())) {
                        javax.swing.UIManager.setLookAndFeel(info.getClassName());
                        break;
                    }
                }
            } catch (ClassNotFoundException ex) {
                java.util.logging.Logger.getLogger(interfaccia1.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
            } catch (InstantiationException ex) {
                java.util.logging.Logger.getLogger(interfaccia1.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
            } catch (IllegalAccessException ex) {
                java.util.logging.Logger.getLogger(interfaccia1.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
            } catch (javax.swing.UnsupportedLookAndFeelException ex) {
                java.util.logging.Logger.getLogger(interfaccia1.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
            }
            //</editor-fold>
    
            /* Create and display the form */
            java.awt.EventQueue.invokeLater(new Runnable() {
                public void run() {
                    new interfaccia1().setVisible(true);
                }
            });
        }
    
        // Variables declaration - do not modify                     
        private javax.swing.JButton btn1;
        // End of variables declaration                   
    }
    codice:
    public class interfaccia_scelta extends javax.swing.JFrame {
    
        /**
         * Creates new form interfaccia_scelta
         */
        String scelta=null;
        public interfaccia_scelta() {
            initComponents();
           
        }
    
        /**
         * This method is called from within the constructor to initialize the form.
         * WARNING: Do NOT modify this code. The content of this method is always
         * regenerated by the Form Editor.
         */
        @SuppressWarnings("unchecked")
        // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
        private void initComponents() {
    
            jButton1 = new javax.swing.JButton();
            jButton2 = new javax.swing.JButton();
            jLabel1 = new javax.swing.JLabel();
    
            setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
    
            jButton1.setText("1");
            jButton1.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    jButton1ActionPerformed(evt);
                }
            });
    
            jButton2.setText("2");
            jButton2.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    jButton2ActionPerformed(evt);
                }
            });
    
            jLabel1.setText("scegli1 o 2");
    
            javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
            getContentPane().setLayout(layout);
            layout.setHorizontalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup()
                    .addGap(67, 67, 67)
                    .addComponent(jButton1)
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 147, Short.MAX_VALUE)
                    .addComponent(jButton2)
                    .addGap(108, 108, 108))
                .addGroup(layout.createSequentialGroup()
                    .addGap(176, 176, 176)
                    .addComponent(jLabel1)
                    .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
            );
            layout.setVerticalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup()
                    .addGap(66, 66, 66)
                    .addComponent(jLabel1)
                    .addGap(54, 54, 54)
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 35, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addComponent(jButton2, javax.swing.GroupLayout.PREFERRED_SIZE, 35, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addContainerGap(131, Short.MAX_VALUE))
            );
    
            pack();
        }// </editor-fold>                        
    
        private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
            // TODO add your handling code here:
            scelta="1";
            System.out.println(scelta);
            
            
        }                                        
    
        private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
            // TODO add your handling code here:
            scelta="2";
            System.out.println(scelta);
        }                                        
    
        /**
         * @param args the command line arguments
         */
        public static void main(String args[]) {
            /* Set the Nimbus look and feel */
            //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
            /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
             * For details see http://download.oracle.com/javase/tu...feel/plaf.html 
             */
            try {
                for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                    if ("Nimbus".equals(info.getName())) {
                        javax.swing.UIManager.setLookAndFeel(info.getClassName());
                        break;
                    }
                }
            } catch (ClassNotFoundException ex) {
                java.util.logging.Logger.getLogger(interfaccia_scelta.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
            } catch (InstantiationException ex) {
                java.util.logging.Logger.getLogger(interfaccia_scelta.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
            } catch (IllegalAccessException ex) {
                java.util.logging.Logger.getLogger(interfaccia_scelta.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
            } catch (javax.swing.UnsupportedLookAndFeelException ex) {
                java.util.logging.Logger.getLogger(interfaccia_scelta.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
            }
            //</editor-fold>
    
            /* Create and display the form */
            java.awt.EventQueue.invokeLater(new Runnable() {
                public void run() {
                    new interfaccia_scelta().setVisible(true);
                }
            });
        }
    
        // Variables declaration - do not modify                     
        private javax.swing.JButton jButton1;
        private javax.swing.JButton jButton2;
        private javax.swing.JLabel jLabel1;
        // End of variables declaration                   
    }
    grazie ancora per l'aiuto

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2014
    residenza
    Padova
    Messaggi
    361
    Ok allora se ho capito bene il tuo problema è questo:
    quando sei su interfaccia1 premi il bottone out scelta e ottieni sempre stampata a video la stringa null anche se in precedenza su interfaccia_scelta hai premuto il bottone 1 o 2.

    Come dicevo nel messaggio precedente la Stringa scelta è una variabile di istanza della classe interfaccia_scelta, cioè ogni oggetto della classe ha quella stringa.
    Quando premi out scelta su interfaccia1 tu crei una nuova istanza di interfaccia_scelta , che pertanto ha la stringa scelta settata di default a null, perchè è indipendente da tutti gli altri oggetti di interfaccia_scelta creati in precedenza.

    Puoi fare conoscere a interfaccia1 la variabile scelta in più modi, i più semplici sono dichiarare come static il campo scelta in modo che sia comune a tutti gli oggetti di interfaccia_scelta creati, o (soluzione molto migliore) tenere in interfaccia1 un riferimento a un oggetto di interfaccia_scelta e controllare il valore di scelta di quell'oggetto.

    PS: Il codice che hai postato conferma l'iniziale impressione di confusione generale, è sempre buona prassi seguire le convenzioni dei nomi che iniziano con la maiuscola per le classi, poi converrebbe importare le classi che ti servono per evitare di dichiarare ogni volta un JButton come
    javax.swing.JButton etc.
    Poi usi un layout molto complesso per così pochi componenti, e in generale potresti ripensare a come sono strutturate molte altre cose (in primis il fatto che si apra una nuova finestra di interfaccia_scelta ogni volta che premi il bottone sull'altro frame)
    Ultima modifica di Ansharja; 12-11-2015 a 19:32

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2015
    Messaggi
    103
    premettendo che si,non sono un esperto in java, comunque si sulla nominazione delle classi hai ragione, ma lo ho fatto di fretta solo per una prova,per il resto, non ho usato awt,ma swing, quindi molto è codice autogenerato. Comunque scusami ma non ho ben chiaro la soluzione"tenere in interfaccia1 un riferimento a un oggetto di interfaccia_scelta e controllare il valore di scelta di quell'oggetto." potresti farmi un esempio con del codice? grazie ancora(per la soluzione dello static invece è chiara)

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2015
    Messaggi
    103
    cioè, non sarebbe quello che ho già fatto nel codice prima? creo un'istanza di interfaccia scelta e passo scelta a interfaccia1 tramite l'istanza...ma non va

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2014
    residenza
    Padova
    Messaggi
    361
    Dipende in particolare dal fatto che tu voglia o meno avere più Interfaccia_scelta per ogni Interfaccia1, cosa che io trovo piuttosto inutile.
    Se ti basta avere una sola Interfaccia_scelta basta che nella classe Interfaccia1 tu dichiari un campo Interfaccia_scelta, ad esempio :

    codice:
    // fai tutti gli import qui ...
    public class Interfaccia1
    {
    Interfaccia_scelta is; // metodi vari...
    }
    Poi all'interno del metodo tu istanzi una nuova Interfaccia_scelta solo se non l'hai già fatto, altrimenti controlli il valore di scelta e ne fai quello che vuoi

    codice:
    private void btn1ActionPerformed(java.awt.event.ActionEvent evt) 
    { 
            if(is==null)
    {
    is=new Interfaccia_scelta();
    is.setVisible(true);
    }
    else
    {
    String scelta=is.scelta;
    System.out.println(scelta);
    // usi scelta come credi ...
    }
    }
    Ultima modifica di Ansharja; 12-11-2015 a 21:06

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2015
    Messaggi
    103
    ah ok ora capisco il problema, se io instanziavo ogni volta un Interfaccia_scelta,il valore scelta era sempre vuoto,invece in questa maniera l'istanzia una volta sola e basta, potendo attingere al risultato scelta dentro Interfaccia_scelta....Grazie mille ancora per l'aiuto

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2014
    residenza
    Padova
    Messaggi
    361
    Di niente

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.