public WRace(CCars cars,EClass category,final LinkedList<CRacer> racs) {
        setFocusable(true);
            KeyboardFocusManager.getCurrentKeyboardFocusManager()
                .addKeyEventDispatcher(new KeyEventDispatcher() {
                @Override
                public boolean dispatchKeyEvent(KeyEvent e) {
                    char key = e.getKeyChar();  
                    if(race.isRacing()){
                        if(e.getID() == KeyEvent.KEY_PRESSED){
                            if ((key >= '1' && key <= '9')) {
                                int u = key - '0' - 1;
                                if(race.isQueued() && u <= racers.size()){
                                    if(race.getLaps(racers.get(u)).finished(end) && !finished.contains(u)){
                                        finished.add(u);
                                    }
                                    race.chooseLap(racers.get(u));
                                    revalidateValues();
                                }
                            }
                        }
                              
                      }
                  return false;
                }
          });
        initComponents();
        this.cars = cars;
        this.category = category;
        this.racers = racs;
        
        finished = new HashSet<Integer>();
        
        this.setVisible(true);
        setDefaultCloseOperation(HIDE_ON_CLOSE);
        
        race = new CRace(racers,this);
        
        cars.selectRace(race);
        racers_indexes = new HashMap<CRacer, Integer>();
        
        racers_chart = new HashMap<Integer, CRacer>();
        
        int indexes = 1;
        for (Iterator<CRacer> it = racers.iterator(); it.hasNext();) {
            CRacer racer = it.next();
            racers_chart.put(indexes, racer);
            racers_indexes.put(racer, indexes);
            indexes++;
        }
        racersResults.setVerticalTextPosition(JLabel.TOP);
        racersResults.setHorizontalTextPosition(JLabel.LEFT);
        redrawPanel();
        paint_time();
        
    }