private void updateSelected(Population pop) {
    int popSize = pop.getNumberOfIndividuals();

    if (selected > popSize) selected = popSize - 1;
    if (selected < 0) selected = 0;

    if ((selected >= 0)
        && (selected
            < popSize)) // selectedVariable = (YoVariable) variables.getVariables().get(selected);
    {
      selectedIndividualHolder.setSelectedIndividual(pop.getIndividual(selected));
    }
  }
  public void paintComponent(Graphics g) {
    super.paintComponent(g);

    // g.drawString("Hello", 100, 100);

    Population population = selectedPopulationHolder.getSelectedPopulation();

    if (population == null) return;

    GeneticAlgorithmIndividualToEvaluate[] individuals = population.getAllIndividuals();

    Rectangle rectangle = this.getVisibleRect();
    int i_min = (rectangle.y) / FONT_SIZE - 1;
    int i_max = (rectangle.y + rectangle.height) / FONT_SIZE + 1;
    int size = individuals.length;

    i_min = Math.max(i_min, 0);
    i_min = Math.min(i_min, size);
    i_max = Math.max(i_max, 0);
    i_max = Math.min(i_max, size);

    // for(int i=0; i<individuals.length; i++)
    // {
    for (int i = i_min; i < i_max; i++) {
      GeneticAlgorithmIndividualToEvaluate ind = individuals[i];

      if (selectedIndividualHolder.getSelectedIndividual() == ind) g.setColor(Color.red);
      else g.setColor(Color.black);

      g.drawString(ind.getName(), 2, i * FONT_SIZE + 10);

      if (ind.isEvaluationDone()) {
        double fitness = ind.getFitness();
        g.drawString(Double.toString(fitness), 200, i * FONT_SIZE + 10);
      }
    }
  }