Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente bannato
    Registrato dal
    Sep 2006
    Messaggi
    179

    [java] passaggio di parametri

    scusate nn rieco a passare una variabile da un metodo alla classe principale....
    vorrei poter passare la variabile "valueText" ad un altro metodo....
    codice:
     public void focusLost(FocusEvent e) {
            JTextField source = (JTextField)e.getSource();
            resultText.setText("Il vostro testo e': " + source.getText());
            valueText = source.getText();          
            //return valueText;
            
        }    
        public String restituisci()
        {             
           System.out.println("prova " + valueText); 
           return valueText; 
        }
    questi due metodi fanno parte di una classe....
    nella classe ho naturalmente inizializzato la variabile valueText:
    Public String valueText;
    quando la stampo mi da null...
    questo perchè?
    oppure nel metodo focusLost vorrei mettere un return valueText... ma nn ci riesco potreste aiutarmi
    TRADUZIONE!!!:QUELLO CHE VORREI FARE è SEMPLICEMENTE IL PASSAGGIO DELLE VARIABILE "VALUETEXT" AD UN ALTRO METODO, E STAMPARLA DA QUESTO METODO.....
    grazie

  2. #2
    Utente bannato
    Registrato dal
    Sep 2006
    Messaggi
    179

    [java]variabile nn riempita!

    scusate avrei bisnogno di passare la variabile valueText da questa classe x, un'altra y
    potreste aiutarmi....?
    codice:
    public class TextFieldFocus extends JFrame implements FocusListener {    
       
        JLabel resultText;
        public static String valueText;    
       
        TextFieldFocus() {
            this.setTitle("Componenti Swing");
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            this.setSize(350, 200);
            this.setLocation(580,400);
            JPanel content = new JPanel(new BorderLayout());
            this.add(content);
            
            JPanel bottom = new JPanel();
            content.add(bottom, BorderLayout.SOUTH);
                  
            JPanel center = new JPanel();
            content.add(center);
            
            JPanel top = new JPanel();
            content.add(top, BorderLayout.NORTH);
            
            JLabel textTop = new JLabel("Digitare del testo...", JLabel.CENTER);
            top.add(textTop);
            
            resultText = new JLabel("Inserite il testo e premete TAB!", JLabel.CENTER);
            resultText.setFont(new Font("Sans-Serif", Font.ITALIC, 10));
            bottom.add(resultText);
            
            JTextField text = new JTextField("Qui si inserisce il testo...", 20);
            text.addFocusListener(this);
            center.add(text);
            
            JButton button = new JButton("Vai!");
            center.add(button);
            button.addActionListener(new ActionListener()
          {
              public void actionPerformed(ActionEvent a)      
              { 
                  setVisible(false);
              }
            }                        );       
             this.setVisible(true);        
        }   
        
        public void focusGained(FocusEvent e) {
            JTextField source = (JTextField)e.getSource();
            source.setSelectionStart(0);
            source.setSelectionEnd(source.getText().length());
        }        
        
        public void focusLost(FocusEvent e) {
            JTextField source = (JTextField)e.getSource();
            resultText.setText("Il vostro testo e': " + source.getText());
            valueText = source.getText();             
        }    
        
         public static String restituisci()  
        {               
          // System.out.println(valueText); 
          return valueText; 
        }       
    }
    quando la richiamo dalla classe y, chiamo la classe x di nome TextFieldFocus e faccio
    codice:
    String prova=null;
    TextFieldFocus nik = new TextFieldFocus();                   
              prova = nik.restituisci();  
    System.out.println(prova);
    ma mi stampa null.... potreste dirmi come modificare il codice per avere il contenuto della vatriabile valueText?

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,326

    Moderazione

    Unisco le due discussioni.
    La prossima volta, visto che sull'argomento hai già una discussione aperta, continua quella, non aprirne una nuova.


    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

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Bhè, non capisco un po' di cose... perch* la dichiari public static (o lo fai solo perché hai un main di test in quella classe e vuoi utilizzare la variabile lì?).

    Procederei così: dichiarala private (non penso ti serva static), crea un metodo

    codice:
    public String getvalueText() {
      return valueText;
    }
    Comunque, che ti aspetti di trovarci se richiami la variabile prima che l'evento focusGained si sia verificato? Fino a quel momento hai solo detto alla JVM che hai un String il cui riferimento si chiama, per te, valueText. ed è vuota.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  5. #5
    Utente bannato
    Registrato dal
    Sep 2006
    Messaggi
    179
    andrea ho fatto cme mi hai detto....
    codice:
    public class TextFieldFocus extends JFrame implements FocusListener {    
       
        JLabel resultText;
        String valueText;     
       
        TextFieldFocus() {
            this.setTitle("Componenti Swing");
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            this.setSize(350, 200);
            this.setLocation(580,400);
            JPanel content = new JPanel(new BorderLayout());
            this.add(content);
            
            JPanel bottom = new JPanel();
            content.add(bottom, BorderLayout.SOUTH);
                  
            JPanel center = new JPanel();
            content.add(center);
            
            JPanel top = new JPanel();
            content.add(top, BorderLayout.NORTH);
            
            JLabel textTop = new JLabel("Digitare del testo...", JLabel.CENTER);
            top.add(textTop);
            
            resultText = new JLabel("Inserite il testo e premete TAB!", JLabel.CENTER);
            resultText.setFont(new Font("Sans-Serif", Font.ITALIC, 10));
            bottom.add(resultText);
            
            JTextField text = new JTextField("Qui si inserisce il testo...", 20);
            text.addFocusListener(this);
            center.add(text);
            
            JButton button = new JButton("Vai!");
            center.add(button);
            button.addActionListener(new ActionListener()
          {
              public void actionPerformed(ActionEvent a)      
              { 
                  setVisible(false);
              }
            }                        );       
             this.setVisible(true);        
        }   
        
        public void focusGained(FocusEvent e) {
            JTextField source = (JTextField)e.getSource();
            source.setSelectionStart(0);
            source.setSelectionEnd(source.getText().length());
        }        
        
        public void focusLost(FocusEvent e) {
            JTextField source = (JTextField)e.getSource();
            resultText.setText("Il vostro testo e': " + source.getText());
            valueText = source.getText();           
        }    
        
       String getvalueText() { 
             return valueText; 
        }
    poi quando la richiamo dalla classe y faccio
    codice:
    TextFieldFocus nik = new TextFieldFocus(); 
    value=nik.getvalueText();           
              System.out.println(value);
    TextFieldFocus sarebbe il nome della classe x...(quella che ti ho postato)
    value è una stringa che ho inizializzata a null nella classe y
    codice:
    public String value=null;
    ma mi stampa sempre NULL....

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    vedi questo:

    codice:
    public void focusLost(FocusEvent e) {
            JTextField source = (JTextField)e.getSource();
            resultText.setText("Il vostro testo e': " + source.getText());
            valueText = source.getText();           
        }
    è dove vai a settare valueText. Succede mai che venga invocato prima della tua chiamata a getvalueText nella classe di test? Se non succede, ti resta a null valueText e di conseguenza anche il metodo getvalueText restituirà null.

    Debug:

    codice:
    public void focusLost(FocusEvent e) {
            JTextField source = (JTextField)e.getSource();
            resultText.setText("Il vostro testo e': " + source.getText());
            valueText = source.getText();
            System.out.println("E' stato invocato focusLost da: "+valueText);          
        }
    stampa mai niente in console?
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  7. #7
    Utente bannato
    Registrato dal
    Sep 2006
    Messaggi
    179
    si se stampo da focusLost la variabile la riempie....
    ma questo er già riuscito a farlo il problema è che ho provato ma non riesco a passare valueText da foculLost

  8. #8
    Utente bannato
    Registrato dal
    Sep 2006
    Messaggi
    179

    andrea ma nn c'è modo di risolvere sta cosa?

  9. #9
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    secondo me non viene richiamato focuslost prima della inizializzazione di value.
    Tanto per fare ancora debug, prima di value = ....

    aggiungi
    codice:
    System.out.println("Sto per istanziare un TextFieldFocus");
    Se leggi quello in console, poi il messaggio di focusLost e quindi stampi value, allora non c'è ragione apparente per cui value non sia valorizzato a dovere. Altrimenti è come sospetto ( e probabilmente risolvi istanziando il tuo TextFieldFocus da un'altra parte nella classe di test... ossia dove sia per lui possibile poi arrivare ad invocare i metodi del focus listener)
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

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.