Ver Mensaje Individual
  #2 (permalink)  
Antiguo 10/02/2015, 14:34
macamba
 
Fecha de Ingreso: octubre-2009
Mensajes: 47
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Interface se bloquea o Invalid thread access

Me respondo a mi mismo, el primer ejemplo que expuse lo genere como Application Windows y este otro ejemplo que si que consigo que haga efecto que busco que es ejecutar otro hilo en paralelo con acceso a los objetos de la interface lo abro como JFrame

Código:
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JTextField;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;


public class Example extends JFrame
{
private JPanel contentPane;
private JTextField textField;
static int count = 0;

public static void main(String[] args)
 {
 EventQueue.invokeLater(new Runnable()
  {
  public void run()
   {
   try
    {
    Example frame = new Example();
    frame.setVisible(true);
    }
   catch(Exception e)
    {
    e.printStackTrace();
    }
   }
  });
 }

public Example()
 {
 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 setBounds(100, 100, 450, 300);
 contentPane = new JPanel();
 contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
 setContentPane(contentPane);
 contentPane.setLayout(null);
 
 textField = new JTextField();
 textField.setText("");
 textField.setBounds(10, 11, 86, 20);
 contentPane.add(textField);
 textField.setColumns(10);
 
 JButton btnNewButton = new JButton("New button");
 btnNewButton.addActionListener(new ActionListener()
  {
  public void actionPerformed(ActionEvent arg0)
   {
	  
   Thread newThread = new Thread(new Runnable()
    {
    @Override
    public void run()
     {
     for(int i = 0; i < 100000; ++i)
      {
      textField.setText(count + "");
      ++count;
      }
     }
    });
   newThread.start();
   
   }
  });
 btnNewButton.setBounds(106, 10, 89, 23);
 contentPane.add(btnNewButton);
 }
}