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

    [Java] Problema pulsante "interrompi ciclo"

    Salve a tutti avrei un problema con questo programmino:

    il progrmma è una finestra che cambia colore a caso e ho aggiunto un pulsante che quando viene cliccato dovrebbe interrompere l'aggiornamento della finestra.. solo che da errore mentre se provo a far stampare uun messaggio funziona, per caso sapete cosa mi sto dimenticando? grazie.

    codice:
    public class FrameWithGridLayout extends JFrame {
    
    	
    	private static class MyButtonListener implements ActionListener {
    		public void actionPerformed(ActionEvent evt) {
    			
    			// break;
    						
    			}
    	}
    	
    	
    	public static void main(String[] args) {
    		new FrameWithGridLayout("Here I am!");
    	}
    
    	public FrameWithGridLayout(String title) {
    		super(title);
    
    		// indichiamo le nostre dimensioni
    		setBounds(100, 200, 300, 400);
    		setLayout(new GridLayout(4, 4));
    		
    		JButton b = new JButton();
    		b.setSize(50,50);
    		MyButtonListener listener = new MyButtonListener();
    		b.addActionListener(listener);
    		getContentPane().add(b);
    		// indichiamo cosa deve accadere quando si clicca sul pulsante di chiusura:
    		// il programma deve essere terminato
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
    		// don't be shy!
    		setVisible(true);
    
    		// adesso giochiamo: modifichiamo il nostro colore ciclicamente
    		int red = 0, green = 96, blue = 192;
    		while (true) {
    			// chiedo di cambiare colore di background al content pane
    			// che contiene il corpo della finestra
    			getContentPane().setBackground(new Color(red++ % 256, green++ % 256, blue++ % 256));
    
    			
    		}
    	}
    
    	
    }

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Toglie quel while true e metti un while (!fermati). fermati sarà un boolean controllato dal pulsante.
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    Grazie mille!

  4. #4
    e se volessi farlo riprendere?

    nel bottone "Pausa" ho collegato l'evento avanza=false;
    mentre nel bottone "Riprendi" ho collegato l'evento avanza=true;

    ma non riparte

  5. #5
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da stefano9192
    e se volessi farlo riprendere?

    nel bottone "Pausa" ho collegato l'evento avanza=false;
    mentre nel bottone "Riprendi" ho collegato l'evento avanza=true;

    ma non riparte
    OMG! Non avevo notato che il ciclo fosse nel costruttore!

    Ovvio che non riparte! L'esecuzione è sequenziale: terminato il ciclo, l'esecuzione prosegue con le istruzioni successive, nel tuo caso nulla in particolare

    Dovresti far eseguire quel ciclo in un thread separato e sospenderlo quando clicchi "pausa" e farlo riprendere quando clicchi "riprendi". Non è difficile e dovresti trovare anche diversi esempi online
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  6. #6
    Il costrutto while(), non sarebbe meglio inserirlo in un metodo che itera fino a quando tu non clicchi il JButton??
    E quando vuoi riprendere l'iterazione, premendo di nuovo il JButton, chiami la funzione contenente il while()...

  7. #7
    forte! non ci avveo pensato! Grazie mille!

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.