/**
   * A partir de un iterador de libros actualiza los resultados de un búsqueda donde se pueden
   * devolver libros.
   *
   * @param libros Iterador que apunta al primer libro del resultado de la búsqueda.
   */
  public void actualizarListaAlquilados(Iterador<ILibro> libros) {
    panelCentral.removeAll();
    anhanirLabeles();
    int i = 0;
    if (libros != null) {

      while (libros.haySiguiente()) {
        ILibro libro = libros.darSiguiente();
        panelCentral.add(new PanelLibroAlquilado(libro, principal));
        i++;
      }
      if (i <= 5) layout.setRows(7);
      else {
        layout.setRows(i + 2);
        panelCentral.setSize(511, i * 146);
      }
      for (int j = i + 2; j < 6; j++) {
        JPanel panel = new JPanel();
        panel.setBackground(Color.WHITE);
        panelCentral.add(panel);
      }
      labelMostrarResultados.setText("Resultados de la búsqueda: " + i);
      panelCentral.repaint();
    }
  }
  /**
   * Constructor del diálogo.
   *
   * @param nPrincipal Interfaz principal de la aplicación.
   * @param codificaciones Lista de posibles codificaciones.
   * @param clientes Clientes de la aplicación.
   */
  public DialogoNuevoMensaje(
      InterfazCentral nPrincipal, Iterador<String> codificaciones, Iterador<String> clientes) {
    super(nPrincipal);
    principal = nPrincipal;
    setSize(432, 277);
    setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
    setLayout(new BorderLayout());
    setLocationRelativeTo(principal);
    setModal(true);
    setTitle("Nuevo Mensaje");
    // Construcción del panel central.
    JPanel panel = new JPanel();
    GridBagConstraints gridBagConstraints6 = new GridBagConstraints();
    gridBagConstraints6.fill = GridBagConstraints.HORIZONTAL;
    gridBagConstraints6.gridy = 0;
    gridBagConstraints6.weightx = 1.0;
    gridBagConstraints6.gridx = 1;
    GridBagConstraints gridBagConstraints11 = new GridBagConstraints();
    gridBagConstraints11.gridx = 0;
    gridBagConstraints11.gridwidth = 4;
    gridBagConstraints11.ipady = 0;
    gridBagConstraints11.insets = new Insets(10, 0, 0, 0);
    gridBagConstraints11.gridy = 2;
    GridBagConstraints gridBagConstraints5 = new GridBagConstraints();
    gridBagConstraints5.fill = GridBagConstraints.BOTH;
    gridBagConstraints5.gridy = 1;
    gridBagConstraints5.weightx = 1.0;
    gridBagConstraints5.weighty = 1.0;
    gridBagConstraints5.gridwidth = 3;
    gridBagConstraints5.insets = new Insets(5, 0, 0, 0);
    gridBagConstraints5.gridx = 1;
    GridBagConstraints gridBagConstraints4 = new GridBagConstraints();
    gridBagConstraints4.gridx = 0;
    gridBagConstraints4.anchor = GridBagConstraints.NORTHEAST;
    gridBagConstraints4.insets = new Insets(5, 0, 0, 5);
    gridBagConstraints4.gridy = 1;
    lblMensaje = new JLabel();
    lblMensaje.setText("Mensaje:");
    GridBagConstraints gridBagConstraints3 = new GridBagConstraints();
    gridBagConstraints3.fill = GridBagConstraints.HORIZONTAL;
    gridBagConstraints3.gridy = 0;
    gridBagConstraints3.weightx = 1.0;
    gridBagConstraints3.gridx = 3;
    GridBagConstraints gridBagConstraints2 = new GridBagConstraints();
    gridBagConstraints2.gridx = 2;
    gridBagConstraints2.anchor = GridBagConstraints.EAST;
    gridBagConstraints2.insets = new Insets(0, 5, 0, 5);
    gridBagConstraints2.gridy = 0;
    lblCodificacion = new JLabel();
    lblCodificacion.setText("Codificación:");
    GridBagConstraints gridBagConstraints = new GridBagConstraints();
    gridBagConstraints.gridx = 0;
    gridBagConstraints.anchor = GridBagConstraints.EAST;
    gridBagConstraints.insets = new Insets(0, 0, 0, 5);
    gridBagConstraints.gridy = 0;
    lblDestino = new JLabel();
    lblDestino.setText("Enviar a:");
    // Adición de los elementos.
    panel = new JPanel();
    panel.setLayout(new GridBagLayout());
    panel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));

    // Etiquetas
    panel.add(lblDestino, gridBagConstraints);
    panel.add(lblCodificacion, gridBagConstraints2);
    panel.add(lblMensaje, gridBagConstraints4);

    // Combo Codificación
    Vector<String> o = new Vector<String>();
    codificaciones.reiniciar();
    while (codificaciones.haySiguiente()) o.add(codificaciones.darSiguiente());
    comboCodificacion = new JComboBox(o.toArray());
    comboCodificacion.setSelectedIndex(0);
    panel.add(comboCodificacion, gridBagConstraints3);

    // Área de texto del mensaje
    txtMensaje = new JTextArea();
    txtMensaje.setLineWrap(true);
    txtMensaje.setWrapStyleWord(true);
    txtMensaje.addKeyListener(this);
    spnMensaje = new JScrollPane();
    spnMensaje.setViewportView(txtMensaje);
    panel.add(spnMensaje, gridBagConstraints5);

    btnEnviar = new JButton();
    btnEnviar.setText("Enviar");
    btnEnviar.setIcon(new ImageIcon("./data/icons/enviarMensaje.gif"));
    btnEnviar.addActionListener(this);
    btnEnviar.setActionCommand(ENVIAR);
    panel.add(btnEnviar, gridBagConstraints11);

    Vector<String> o2 = new Vector<String>();
    clientes.reiniciar();
    while (clientes.haySiguiente()) o2.add(clientes.darSiguiente());
    comboDestinatarios = new JComboBox(o2.toArray());
    panel.add(comboDestinatarios, gridBagConstraints6);

    add(panel, BorderLayout.CENTER);

    setVisible(true);
  }