questo e il codice con le modifiche da te suggerite:
codice:
package gara;

import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Random;


import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JButton;
import javax.swing.ImageIcon;
import java.awt.Color;
import javax.swing.SwingConstants;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;


public class gara extends JFrame {


	private JPanel contentPane;
	private JButton bottone1;
	private JButton bottone2;
	private JButton bottone3;
	private JButton bottone4;






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


	/**
	 * Create the frame.
	 */
	public gara() {
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 866, 652);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		contentPane.setLayout(null);
		setContentPane(contentPane);
		String immagine="http://images.clipartpanda.com/car-top-view-clipart-red-racing-car-top-view-fe3a.png";
		int y[]=new int[4];
		JButton bottone1 = null;
		try {
			bottone1 =new JButton("Regular",new ImageIcon(new URL(immagine)));
		} catch (MalformedURLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		bottone1.setBounds(10, 11, 130, 95);
		contentPane.add(bottone1);
		
		JButton bottone2 = null;
		try {
			bottone2 =new JButton("Regular",new ImageIcon(new URL(immagine)));
		} catch (MalformedURLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		bottone2.setBounds(10, bottone1.getY()+130, 130, 95);
		contentPane.add(bottone2);
		JButton bottone3 = null;
		try {
			bottone3 =new JButton("Regular",new ImageIcon(new URL(immagine)));
		} catch (MalformedURLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		bottone3.setBounds(10, bottone2.getY()+130, 130, 95);
		contentPane.add(bottone3);
		JButton bottone4 = null;
		try {
			bottone4 =new JButton("Regular",new ImageIcon(new URL(immagine)));
		} catch (MalformedURLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		bottone4.setBounds(10, bottone3.getY()+130, 130, 95);
		contentPane.add(bottone4);
		y[0]=11;
		y[1]=141;
		y[2]=271;
		y[3]=401;


		
		JButton avvia = new JButton("Avvia Gara");
		avvia.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
			}
		});
		avvia.addMouseListener(new MouseAdapter() {
			auto auto1=new auto(bottone1,y[0]);
			auto auto2=new auto(bottone2,y[1]);
			auto auto3=new auto(bottone3,y[2]);
			auto auto4=new auto(bottone4,y[3]);
			
			@Override
			public void mouseClicked(MouseEvent arg0) {
				
				
				
			}
		});
		avvia.setBounds(318, 533, 146, 69);
		contentPane.add(avvia);
		
	}
	
	
	public class auto extends Thread{
		JButton bottone = new JButton();
		int x=10;
		int nuovax=x;
		int y;
		public auto(JButton bottone,int y) {
			super();
			this.bottone = bottone;
			this.y=y;


		}
		int distanza=470;
		int spaziopercorso;
		Random ran=new Random();
		public void run(){
			while(distanza>=0){
				spaziopercorso=ran.nextInt(7);
				distanza=distanza-spaziopercorso;
				nuovax=nuovax+spaziopercorso;
				bottone.setBounds(nuovax, y, bottone.getWidth(), bottone.getHeight());
				try {
					this.sleep(5);
				} catch (InterruptedException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
			//fine gara


		}
		void reset(){
			bottone.setBounds(x, bottone.getY(), bottone.getWidth(), bottone.getHeight());
		}
	}
}
Mi rimane questo errore

Quote Originariamente inviata da andbin Visualizza il messaggio
Rimane cosa, come? Se metti le 4 variabili dei pulsanti come variabili "di istanza", il tuo codice perlomeno compila sicuramente. Poi se ci sia dell'altro che non ho osservato bene io, non so.


Se ti metti a fare interfacce grafiche con multi-threading, il "più o meno" su questi concetti non ci dovrebbe essere.