In linea di massima no. E se è il EDT (event dispatch thread) assolutamente NO perché andresti a "congelare" temporaneamente tutta la interfaccia utente.Originariamente inviato da ciccio_84
forse dovrei stoppare il thread corrente con un wait()
No.Originariamente inviato da ciccio_84
e poi sul metodo mouseClicked mettere un notify() per riprendere l'esecuzione quando viene cliccato il mouse
Qui non centra il "multi-threading"!!Originariamente inviato da ciccio_84
...ovviamente il tutto deve essere multithreading!!
Tieni una variabile di "istanza" che serve per tenere traccia dello "stato" in cui è il disegno della linea. Ripeto che può essere anche solo un banale valore int.
Poi:
Nel actionPerformed del pulsante:
--- se stato è 0, allora la fase di disegno deve partire. Metti stato a 1, poi potresti anche disabilitare il pulsante (almeno l'utente non fa casino) e basta.
Nel mouseClicked del pannello:
--- se stato è 1: accetti il primo punto e te lo memorizzi da qualche parte. Metti stato a 2.
altrimenti
--- se stato è 2: accetti il secondo punto e te lo memorizzi da qualche parte, quindi dovresti disegnare la linea. Nota che qui sei nel mouseClicked, fuori dal "contesto" di disegno di un componente Swing che è paintComponent. Pertanto se devi gestire N linee dovresti accumulare i "dati" della linea in una struttura dati e chiedere il repaint() del pannello e poi nel paintComponent disegnare tutte le linee. Quindi rimetti stato a 0 e ri-abiliti il pulsante.