Oppure

Loading
22/10/15 17:55
perillitommaso
Ho un problemino, dopo aver correttamente(così sembra :rofl: )avviato un thread, esso non mi si chiude più! :(
public class GestorePulsante implements ActionListener {

	private JButton fine;

	
	public GestorePulsante(JButton fine) {
		this.fine=fine;
	}

	public GestorePulsante() {
		
	}

	
	public void actionPerformed(ActionEvent e) {
		String pulsante = e.getActionCommand();
		Thread processofiglio = null;

		if(pulsante.equals("Inizia")){
processofiglio = new Thread(new OraBari());
			
			this.fine.setEnabled(true);
			processofiglio.start();
		}
		
		if(pulsante.equals("Stop")){
			System.out.println(1);
			processofiglio.stop();
			//this.fine.setEnabled(false);
		}

	}



qualcuno così gentile da dirmi perchè? 8-|
è come se non trovasse più il thread.. eppure utilizzo la stessa istanza
Ultima modifica effettuata da perillitommaso 22/10/15 18:40
aaa
22/10/15 22:34
pierotofy
Stai attento a dove dichiari processofiglio.

Come puoi notare, quando actionPerformed viene eseguito mentre premi "Stop", processofiglio è null!

Sposta la dichiarazione di processofiglio come membro della classe.

public class GestorePulsante implements ActionListener {
 
        private JButton fine;
        private Thread processofiglio = null; // <------ qui
       
       // ...
 
       
        public void actionPerformed(ActionEvent e) {
                String pulsante = e.getActionCommand();
                
                // ....
         
        }
Il mio blog: piero.dev
23/10/15 11:15
perillitommaso
allora ho modificato così e a quanto pare sembra funzionare:
public class GestorePulsante implements ActionListener {

	private JButton fine;
	private Thread processofiglio = new Thread(new OraBari());

	
	public GestorePulsante(JButton fine) {
		this.fine=fine;
	}

	public GestorePulsante() {
		
	}

	
	//@SuppressWarnings("deprecation")
	public void actionPerformed(ActionEvent e) {
		String pulsante = e.getActionCommand();


		if(pulsante.equals("Inizia")){
			
			this.fine.setEnabled(true);
			processofiglio.start();
		}
		
		if(pulsante.equals("Stop")){
			processofiglio.stop();
			//this.fine.setEnabled(false);
		}

	}

}
Ultima modifica effettuata da perillitommaso 23/10/15 12:02
aaa
16/11/15 16:09
perillitommaso
raga scusate ma adesso ho un altro problema, dopo la chiusura, non riesco più ad aprirlo! Mi da l'errore nel momento in cui richiamo thread.start(); :alert::alert::alert::alert:
qualcuno può darmi una mano?
aaa
16/11/15 16:30
perillitommaso
ce per definizione un thread dopo essere stoppato non può più essere riavviato?
aaa
16/11/15 21:36
pierotofy
Vedi il metodo suspend() e resume().

docs.oracle.com/javase/7/docs/api/java/lang/…

Prima di buttarti a scrivere codice, assicurati di leggere bene le API che usi. Ti salverà un bel pò di tempo!
Il mio blog: piero.dev