private boolean leerFichero () {
        
        boolean resultado;
        
        final JFileChooser fc = new JFileChooser();

        try {
            
            int returnVal = fc.showOpenDialog(MainVentana.this);

            if (returnVal == JFileChooser.APPROVE_OPTION) {

                File file = fc.getSelectedFile();

                if (algoritmo.leerFichero(file.getAbsolutePath())) {
                    
                    // Se ejecuta el algoritmo Dijkstra
                    algoritmo.executeDijkstra(origen);
                    
                    // Se obtiene la lista de asignaturas para mostrarlas en el 
                    // tablón (jTextArea1)
                    ArrayList<String> asignaturas = algoritmo.getMatriculadas();
                    jTextArea1.setText(asignaturas.toString());
                    
                    this.reiniciarComponentes(1);
                    
                    resultado = true;
                    
                    System.out.println("Se ha ejecutado el algoritmo correctamente...");
                    
                } else {
                                
                    JOptionPane.showMessageDialog(this,
                        "El fichero elegido no tiene el formato adecuado.", "Atención", JOptionPane.ERROR_MESSAGE);

                    this.reiniciarComponentes(0);                    
                    resultado = false;
                    
                }

            } else {
                
                System.out.println("La apertura ha sido cancelada por el usuario.");
                reiniciarComponentes(0);
                resultado = false;
                
            }
            
        } catch (HeadlessException | SecurityException e) {

            reiniciarComponentes(0);
            
            JOptionPane.showMessageDialog(this,
                "No se ha podido cargar el fichero.", "Atención", JOptionPane.ERROR_MESSAGE);
            
            resultado = false;
            
        }
        
        return resultado;
    }