Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Java Thread Join

Linguaggi e sistemi

Moderatori: Foto UtentePaolino, Foto Utentefairyvilje

0
voti

[1] Java Thread Join

Messaggioda Foto Utentefaberebaf » 19 gen 2017, 17:53

Salute a tutti.
Sto realizzando una piccola applicazione con Java che mi da modo di imparare il linguaggio.
Ho incontrato un problema che non riesco a risolvere.
Ad un certo punto del programma principale, mi serve aprire una finestra dove poter immettere
dei parametri che condizionano il resto dell’elaborazione.
La funzione “join” , da quanto ho capito, blocca l’esecuzione del programma che ha fatto partire il thread fino a che questo non ha terminato la propria esecuzione.
La cosa funziona se quella del thread è un’elaborazione batch, se invece è interattiva il thread si conclude con la visualizzazione del frame.
Questo è il codice :
Codice: Seleziona tutto
public class Trmain
{
   public static void main(String[] args)
   {
      Tr tr = new Tr();
      Thread t1 = new Thread(tr);
      t1.start();
      try {
         t1.join();
      } catch (InterruptedException e) {
         // TODO Auto-generated catch block
         e.printStackTrace();
         System.out.println("errore");
      }
      System.out.println("continua programma");
   }
}


Codice: Seleziona tutto
public class Tr  implements Runnable
{
   @Override
   public void run()
   {
      Oggetto v2 = new Oggetto();
   }
}


Codice: Seleziona tutto
public class Oggetto extends JFrame
{
   private JTextField textField;
   public Oggetto()
   {
      setTitle("Oggetto");
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      setBounds(1, 1, 450, 300);
      textField = new JTextField();
      getContentPane().add(textField, BorderLayout.NORTH);
      textField.setColumns(10);
      JButton btnPigia = new JButton("pigia");
      btnPigia.addMouseListener(new MouseAdapter() {
         @Override
         public void mouseClicked(MouseEvent arg0) {
            System.out.println("fatto");
         }
      });
      getContentPane().add(btnPigia, BorderLayout.CENTER);
      JLabel lbl = new JLabel();
      setVisible(true);
   }
}


In pratica il main dovrebbe proseguire solo dopo che è stato premuto “btnPigia” avendo a quel punto a disposizione il valore di “txtField”.
La classe Oggetto sarà istanziata anche da altre classi dell’applicazione.

Non so se sia il modo corretto per risolvere il problema, quindi qualsiasi suggerimento sarà
prezioso.

Grazie.
Avatar utente
Foto Utentefaberebaf
66 3
New entry
New entry
 
Messaggi: 79
Iscritto il: 4 nov 2007, 19:51

0
voti

[2] Re: Java Thread Join

Messaggioda Foto Utentefaberebaf » 20 gen 2017, 23:39

La soluzione è :
Codice: Seleziona tutto
public class ProvaJD extends JDialog

JDialog al posto di JFrame.
JDialog ha alcune limitazioni rispetto a JFrame ma risolve il problema.

Spero che possa essere utile a qualche principiante come me.
Avatar utente
Foto Utentefaberebaf
66 3
New entry
New entry
 
Messaggi: 79
Iscritto il: 4 nov 2007, 19:51

0
voti

[3] Re: Java Thread Join

Messaggioda Foto Utentecicciob90 » 21 gen 2017, 0:05

Scusa se te lo chiedo, ma sei principiante nel linguaggio, o principiante nella programmazione?
Avatar utente
Foto Utentecicciob90
549 6
Frequentatore
Frequentatore
 
Messaggi: 183
Iscritto il: 10 gen 2015, 13:35

0
voti

[4] Re: Java Thread Join

Messaggioda Foto Utentefaberebaf » 21 gen 2017, 10:44

Principiante di OOP e di Java.
Avatar utente
Foto Utentefaberebaf
66 3
New entry
New entry
 
Messaggi: 79
Iscritto il: 4 nov 2007, 19:51

0
voti

[5] Re: Java Thread Join

Messaggioda Foto Utentemarioursino » 31 gen 2017, 0:34

Credo tu debba avviare il JDialog con la proprietà modal.

Vedi qui.
Avatar utente
Foto Utentemarioursino
5.687 3 9 13
G.Master EY
G.Master EY
 
Messaggi: 1598
Iscritto il: 5 dic 2009, 4:32

0
voti

[6] Re: Java Thread Join

Messaggioda Foto Utentefaberebaf » 2 mar 2017, 23:45

Grazie Foto Utentemarioursino.
Scusa il ritardo :oops:
In effetti non poteva essere utile la soluzione senza l'istruzione
Codice: Seleziona tutto
setModal(true);
Avatar utente
Foto Utentefaberebaf
66 3
New entry
New entry
 
Messaggi: 79
Iscritto il: 4 nov 2007, 19:51


Torna a PC e informatica

Chi c’è in linea

Visitano il forum: Nessuno e 20 ospiti