Buonasera,
Sto credando un programma per fare una gara tra 4 auto utilizzando i thread.
solo che mi da un errore nel codice e non so come risolverlo
lerrore e in questa istruzione:
codice:
auto auto1=new auto(bottone1,y[0]);
probabilmente sara anche nelle 3 istruzioni successive ho provato a usare il final ma nulla
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;






    /**
     * 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());
        }
    }
}
Grzie a presto