private void paintComponentsAndMore(Graphics2D g2d) {
        for (int i = 0; i < components.getLength(); i++)

        {
            Componente component = components.get(i);
            g2d.drawImage(component.getImage(theme), component.x, component.y, null);
            // draws the image in the current position
            List<Nodo> inpts = component.getRectEntradas();
            for (int j = 0; j < inpts.getLength(); j++) {
                g2d.setColor(Color.white);
                Nodo entrada = inpts.get(j);
                g2d.fillRect(entrada.x, entrada.y, entrada.width, entrada.height);
                if (entrada.hasInLink())
                    drawLine(g2d, entrada.getColor(), entrada.x + NODO_SIZE / 2,
                            entrada.y + NODO_SIZE / 2,
                            entrada.getInLink().x + NODO_SIZE / 2,
                            entrada.getInLink().y + NODO_SIZE / 2);
            }
            List<Nodo> outpts = component.getRectSalidas();
            for (int j = 0; j < outpts.getLength(); j++) {
                g2d.setColor(Color.white);
                Nodo salida = outpts.get(j);
                g2d.fillRect(salida.x, salida.y, salida.width, salida.height);
            }
        }
    }