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

    [JAVA] SwingWorker non si stoppa

    Ciao ragazzi,
    sto "studiando" la classe SwingWorker. Ho due pulsanti uno di start e uno di stop.
    Premendo il tasto start creo l'oggetto della classe che implementa SwingWorker e lo mando in esecuzione con il metodo execute. Questo esegue tutte le operazioni richieste "in background"correntamente. Il problema è che quando vado a premere stop ricevo l'errore che mi dice che il metodo cancel(true) che invoco fa riferimento ad un oggetto nullo...lo strano è che il modo di chiamare i metodi è molto simile a quello preso da un libro...bah
    posto il codice del listener dei pulsanti:
    codice:
    public class ButtonListener implements ActionListener {
    	private Window window;
            private ResizeWorker worker;  
    public ButtonListener(Window window) {
    		this.window = window;
    }
    	
    	@Override
    	public void actionPerformed(ActionEvent ae) {
    String command = ae.getActionCommand();
    		
    		if ( command == "Start") 
    			startResize();
    		else if (command == "Stop")
    				stopResize();
    		
    		}
    			
    	private void startResize() {
    		worker= new ResizeWorker(window, v);
    		window.stop.setEnabled(true);
    		window.progress.setEnabled(true);
    		window.jbProg.setEnabled(true);
    		worker.execute();
    	}
    	private void stopResize() {
    		 worker.cancel(true); 
    		System.out.println("Operazione Interrotta");
    	}
    }

    Questo è l'errore:
    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at ButtonListener.stopResize(ButtonListener.java:53)


    Grazie in anticipo

  2. #2
    Sicuro di cliccare lo stop dopo aver premuto il tasto start....
    Cmq posta tutto lo stacktrace dell'eccezione avvolte il problema si riesce a capire da tutte le chiamate riportate in esso

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    707
    Immagino che tu abbia 2 bottoni, uno con etichetta Start e uno con etichetta Stop.

    Dal codice che hai scritto potrebbe essere che tu crei 2 ButtonListener invece di uno solo
    da assegnare ad entrambi i bottoni.

    Risolto questo, dovresti comunque fare attenzione al fatto che crei il worker nel metodo Start
    e poi nello Stop non controlli che non sia != null. Cioé, a parte il problema che hai adesso,
    comunque avresti la NullPointerException se premi Stop prima di aver premuto una volta Start.

  4. #4

    grazie

    Originariamente inviato da c0der
    Immagino che tu abbia 2 bottoni, uno con etichetta Start e uno con etichetta Stop.

    Dal codice che hai scritto potrebbe essere che tu crei 2 ButtonListener invece di uno solo
    da assegnare ad entrambi i bottoni.

    Risolto questo, dovresti comunque fare attenzione al fatto che crei il worker nel metodo Start
    e poi nello Stop non controlli che non sia != null. Cioé, a parte il problema che hai adesso,
    comunque avresti la NullPointerException se premi Stop prima di aver premuto una volta Start.
    Ciao,
    era proprio quello il problema, creavo due 2 listener diversi!

    Non controllo che sia null poichè il pulsante è disabilitato finchè non viene premuto lo start.

    Grazie ciao

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 © 2024 vBulletin Solutions, Inc. All rights reserved.