Tengo el siguiente inconveniente y quería saber si alguien me puede dar una mano... Necesito detener la ejecución de un programa hasta que se haga "click" sobre un botón. Es decir, debo parar la ejecución del programa cuando me muestre la venta, y recién cuando se presione sobre el botón "OK" ahí reanudar con la ejecución del programa.
Estaba probando hacerlo con un hilo pero no puedo lograrlo... alguien tiene alguna idea de como hacer esto.... desde ya cualquier idea me vendría muy bien!
A continuación les dejo el código con el cual estoy probando y la idea es que cdo se presione el botón "OK" recién ahí me muestre el ultimo "println" que se encuentra en el main().
Código PHP:
public class ejemplo extends JFrame implements Runnable{
static boolean Load=false;
public JFileChooser jfcExaminarEntrada;
public JButton jbExaminar;
public JButton jbLoad;
public JPanel jPanel1;
public JTextField jtfRutaEntrada;
public String dir;
File myFile;
public ejemplo(){}
public void run(){
synchronized(this){
if(Load==false){
//el problema es q akka tengo q esperar q se cargue la dir, cdo se cargue recien ahi continuar con la ejecucion
initComponents();
}
else{System.out.println("hace otra cosa"); }
}//sync
}//run
private void initComponents() {
setTitle("Seleccionar el Archivo");
setResizable(false);
jfcExaminarEntrada = new JFileChooser();
jPanel1 = new JPanel();
jtfRutaEntrada = new JTextField();
jbExaminar = new JButton();
jbLoad = new JButton();
getContentPane().setLayout(null);
jPanel1.setBorder( BorderFactory.createTitledBorder("Archivo"));
jPanel1.setLayout(null);
jPanel1.add(jtfRutaEntrada);
jtfRutaEntrada.setBounds(20, 30, 350, 19);
jbExaminar.setText("...");
jPanel1.add(jbExaminar);
jbExaminar.setBounds(400, 30, 50, 25);
jbLoad.setText("OK");
jPanel1.add(jbLoad);
jbLoad.setBounds(460, 30, 70, 25);
getContentPane().add(jPanel1);
jPanel1.setBounds(30, 30, 550, 70);
java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
setBounds((screenSize.width-618)/2, (screenSize.height-150)/2, 618, 150);
jbExaminar.addActionListener(new ControlaEventos());
jbLoad.addActionListener(new ControlaEventos());
setVisible(true);
System.out.println("despues de setVisible");
notify();
}
public class ControlaEventos implements ActionListener{
public void actionPerformed(ActionEvent evento){
if (evento.getSource()==jbExaminar){
System.out.println("Entro jbExaminar"); }
if (evento.getSource()==jbLoad){
System.out.println("Entro jbLoad"); }
}
}
public static void main(String[] args){
ejemplo st= new ejemplo();
Thread td= new Thread(st);
td.start();
synchronized(td){
try {
System.out.println("Esperando a que td se complete...");
td.wait();
//parar la ejecucion del programa aca, y continuar luego de haber echo click en el boton "OK" (jbLoad)
//es decir que el proximo cartel de "println" se muestre despues de haber echo click en el boton
} catch (InterruptedException ex) { }
}
//codigo q deberia ejecutarse despues de hacer click en el boton "OK" (jbLoad)
System.out.println("Sigue corriendo ....");
}
}
Saludos..