Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    1,683

    riempire una stringa in base all'evento

    ciao a tutti! per esercizio sto creando una calcolatrice in java, ho messo tutti i bottoni e il risultatato sarà mostrato in una JTextField
    ho due domande
    la prima:
    codice:
                    ActionListener listener = new ActionListener()
    		{
    			public void actionPerformed(ActionEvent e)
    			{
    				String but=e.getActionCommand();
    				txt.setText(txt.getText()+but);
    			}
    		};
    se scrivo così funziona e mi mostra tutto quello che digito ma se volessi mettere tutto in una stringa come faccio? non ci riesco, perchè la vuole final, la vuole inizializzata e un pò di robe, ho provato ma non son stato in grado

    e l'altra domanda è: come mai se scrivo JTextField txt=new JTextField(25); poi l'evento dove c'è setText da errore? e se scrivo final JTextField txt=new JTextField(25); no?
    perchè eclipse me lo ha detto senò non ci arrivavo.. non capisco perchè lo vuole

    grazie e buon natale!

  2. #2
    se il linguaggio è java c'è il forum apposito


  3. #3
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802

    Re: riempire una stringa in base all'evento

    Originariamente inviato da iacoposk8
    se scrivo così funziona e mi mostra tutto quello che digito ma se volessi mettere tutto in una stringa come faccio?
    Cosa vuol dire?

    Originariamente inviato da iacoposk8
    e l'altra domanda è: come mai se scrivo JTextField txt=new JTextField(25); poi l'evento dove c'è setText da errore? e se scrivo final JTextField txt=new JTextField(25); no?
    [u]Dove[/d] lo hai messo? Prima della definizione di listener? In quel caso è ovvio che vada dichiarato final in quando a txt accederai da una classe interna (anonima). Se ragioni un attimo sul significato di final e su che cos'è una classe interna capisci subito il perché di questo
    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. #4
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    1,683

    Re: Re: riempire una stringa in base all'evento

    Originariamente inviato da Alex'87
    Cosa vuol dire?
    esistono le varibili stringa mi pare, io vorrei prendere il button che è stato premuto e inserirlo in una stringa, se premo i button 5*6 e stampo la stringa dovrò leggere 5*6 il resto l'ho capito, grazie

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    1,683
    non si può fare?

  6. #6

    Re: Re: Re: riempire una stringa in base all'evento

    Originariamente inviato da iacoposk8
    esistono le varibili stringa mi pare, io vorrei prendere il button che è stato premuto e inserirlo in una stringa, se premo i button 5*6 e stampo la stringa dovrò leggere 5*6 il resto l'ho capito, grazie
    Si può fare:
    riprendendo il codice sopra

    codice:
                    ActionListener listener = new ActionListener()
    		{
    			public void actionPerformed(ActionEvent e)
    			{        
                                    String testoButton;
    				if( istanzaButton.equals( e.getSource()) ){ //individui la sorgente dell'evento e verifichi se coincide con il tuo bottone
                                        testoButton = istanzaButton.getText(); //metodo ereditato da AbstractButton
                                    }
    			}
    		};

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    1,683
    ma se l'inizializzazione della variabile (String testoButton e nell'ascoltatore degli eventi, ogni volta che genero un evento la variabile mi si resetta, non c'è un modo per far si che non si resetti?

  8. #8
    Originariamente inviato da iacoposk8
    ma se l'inizializzazione della variabile (String testoButton e nell'ascoltatore degli eventi, ogni volta che genero un evento la variabile mi si resetta, non c'è un modo per far si che non si resetti?
    Quello è solo un esempio! Pensavo fossi in grado di arrivarci da solo..

    Immagina che quel pezzo di codice sia in un'altra classe (classe A), cioè parliamo di una classe anonima definita all'interno della classe A, dunque devi definire testoButton come campo di istanza della classe A (per esempio).

    Poi non dimenticarti di aggiungere quell'ascoltatore all'istanza di JButton a cui vuoi collegarlo.

  9. #9
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    1,683
    ragionare in classi ancora faccio una fatica tremenda
    mi potresti far vedere gentilmente?
    grazie ancora

  10. #10
    codice:
    import java.awt.event.*;
    import java.awt.GridLayout;
    import java.awt.Color;
    import javax.swing.*;
    
    public class Esempio extends JPanel{
        private String textButton;    
        private JButton button;
        private JTextField textField;
        /**
         * Creates a new instance of <code>Esempio</code>.
         */
        public Esempio() {
        	setLayout( new GridLayout(2, 1) );
        	button = new JButton("Testo button");
        	button.addActionListener(
        		new ActionListener(){
        			public void actionPerformed(ActionEvent e){
        				if( button.equals( e.getSource() ) ) {
        					textButton = button.getText(); //campo in questione
        					textField.setText( textButton );
        				}
        			}
        		}
        	);
        	textField = new JTextField();
        	textField.setColumns(10);
        	add( textField );
        	add( button );
        }
        
        public static void avviaGUI(){
        	JFrame window = new JFrame("Esempio");
        	window.add( new Esempio() );
        	window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        	window.setResizable(false);
        	window.pack();
        	window.setVisible(true);
        }
        
        /**
         * @param args the command line arguments
         */
        public static void main(String[] args) {
            // TODO code application logic here
            SwingUtilities.invokeLater( 
            	new Runnable(){
            		public void run(){
            			Esempio.avviaGUI();
            		}
            	}
            );
        }
    }
    L'esempio che ti ho fatto è banale e non ha molto senso. Però dovrebbe aiutarti a capire qualcosa.

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.