co.com.controlestatidisticoshewhart.main.VentanaPrincipal.java Source code

Java tutorial

Introduction

Here is the source code for co.com.controlestatidisticoshewhart.main.VentanaPrincipal.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package co.com.controlestatidisticoshewhart.main;

import co.com.controlestatidisticoshewhart.constante.Constante;
import co.com.controlestatidisticoshewhart.logica.Calculo;
import co.com.controlestatidisticoshewhart.objetos.Dato;
import co.com.controlestatidisticoshewhart.objetos.DatosExcelSingleton;
import co.com.controlestatidisticoshewhart.util.Util;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import javax.swing.SwingWorker;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.table.DefaultTableModel;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.usermodel.BorderStyle;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Row;

/**
 *
 * @author Jhon
 */
public class VentanaPrincipal extends javax.swing.JFrame {

    private DefaultTableModel modeloTabla;

    /**
     * Creates new form VentanaPrincipal
     */
    public VentanaPrincipal() {
        initComponents();
        cargarValidadores();
        modeloTabla = new DefaultTableModel(null, configurarColumnasTabla());
        jButton_guardarResultadosEnExcel.setEnabled(false);
    }

    private String[] configurarColumnasTabla() {
        String columnas[] = new String[] { Constante.INDICE, Constante.DATO_ALEATORIO,
                Constante.SUPERA_LIMITE_INFERIOR, Constante.SUPERA_LIMITE_SUPERIOR };
        return columnas;
    }

    private void cargarValidadores() {
        /** numeroDatosSimular */
        jTextField_numeroDatosSimular.addKeyListener(new KeyAdapter() {
            @Override
            public void keyTyped(KeyEvent e) {
                char c = e.getKeyChar();
                if (!((c >= '0') && (c <= '9') || (c == KeyEvent.VK_BACK_SPACE) || (c == KeyEvent.VK_DELETE))) {
                    getToolkit().beep();
                    e.consume();
                    mensaje(Constante.DEBE_DIGITAR_SOLO_NUMEROS);
                }
            }
        });

        /** media */
        jTextField_media.addKeyListener(new KeyAdapter() {
            @Override
            public void keyTyped(KeyEvent e) {
                char c = e.getKeyChar();
                if (!((c >= '0') && (c <= '9') || (c == KeyEvent.VK_BACK_SPACE) || (c == KeyEvent.VK_DELETE)
                        || (c == '-'))) {
                    getToolkit().beep();
                    e.consume();
                    mensaje(Constante.DEBE_DIGITAR_SOLO_NUMEROS);
                }
            }
        });

        /** desviacion estandar */
        jTextField_desviacionEstandar.addKeyListener(new KeyAdapter() {
            @Override
            public void keyTyped(KeyEvent e) {
                char c = e.getKeyChar();
                if (!((c >= '0') && (c <= '9') || (c == KeyEvent.VK_BACK_SPACE) || (c == KeyEvent.VK_DELETE)
                        || (c == '-'))) {
                    getToolkit().beep();
                    e.consume();
                    mensaje(Constante.DEBE_DIGITAR_SOLO_NUMEROS);
                }
            }
        });

        /** limite De Control Inferior */
        jTextField_limiteDeControlInferior.addKeyListener(new KeyAdapter() {
            @Override
            public void keyTyped(KeyEvent e) {
                char c = e.getKeyChar();
                if (!((c >= '0') && (c <= '9') || (c == KeyEvent.VK_BACK_SPACE) || (c == KeyEvent.VK_DELETE)
                        || (c == '-'))) {
                    getToolkit().beep();
                    e.consume();
                    mensaje(Constante.DEBE_DIGITAR_SOLO_NUMEROS);
                }
            }
        });

        /** limite De Control Superior */
        jTextField_limiteDeControlSuperior.addKeyListener(new KeyAdapter() {
            @Override
            public void keyTyped(KeyEvent e) {
                char c = e.getKeyChar();
                if (!((c >= '0') && (c <= '9') || (c == KeyEvent.VK_BACK_SPACE) || (c == KeyEvent.VK_DELETE)
                        || (c == '-'))) {
                    getToolkit().beep();
                    e.consume();
                    mensaje(Constante.DEBE_DIGITAR_SOLO_NUMEROS);
                }
            }
        });
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jLabel1 = new javax.swing.JLabel();
        jPanel1 = new javax.swing.JPanel();
        jLabel2 = new javax.swing.JLabel();
        jTextField_numeroDatosSimular = new javax.swing.JTextField();
        jPanel2 = new javax.swing.JPanel();
        jLabel3 = new javax.swing.JLabel();
        jLabel4 = new javax.swing.JLabel();
        jTextField_media = new javax.swing.JTextField();
        jTextField_desviacionEstandar = new javax.swing.JTextField();
        jPanel3 = new javax.swing.JPanel();
        jLabel5 = new javax.swing.JLabel();
        jTextField_limiteDeControlInferior = new javax.swing.JTextField();
        jLabel6 = new javax.swing.JLabel();
        jTextField_limiteDeControlSuperior = new javax.swing.JTextField();
        jPanel4 = new javax.swing.JPanel();
        jLabel7 = new javax.swing.JLabel();
        jLabel_arl = new javax.swing.JLabel();
        jLabel8 = new javax.swing.JLabel();
        jLabel9 = new javax.swing.JLabel();
        jLabel_media = new javax.swing.JLabel();
        jLabel_cantidadDatosFueraDeLimite = new javax.swing.JLabel();
        jLabel12 = new javax.swing.JLabel();
        jLabel_limites = new javax.swing.JLabel();
        jLabel13 = new javax.swing.JLabel();
        jLabel_tiempoEjecucionGeneracionNumeros = new javax.swing.JLabel();
        jLabel15 = new javax.swing.JLabel();
        jLabel_tiempoEjecucionCalculoArl = new javax.swing.JLabel();
        jPanel5 = new javax.swing.JPanel();
        jButton_ejecutarSimulacion = new javax.swing.JButton();
        jButton_guardarResultadosEnExcel = new javax.swing.JButton();
        jPanel6 = new javax.swing.JPanel();
        jScrollPane1 = new javax.swing.JScrollPane();
        jTable_tablaDeDatos = new javax.swing.JTable();
        jLabel10 = new javax.swing.JLabel();
        jPanel7 = new javax.swing.JPanel();
        jProgressBar_progreso = new javax.swing.JProgressBar();
        jLabel_barraDeEstado = new javax.swing.JLabel();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("Control Estadistico Shewhart v.1.0.0");

        jLabel1.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        jLabel1.setForeground(new java.awt.Color(255, 0, 0));
        jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        jLabel1.setText("Control Estatidistico de la Calidad");
        jLabel1.setToolTipText("Control Estatidistico de la Calidad");

        jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Generacin nmeros",
                javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
                javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 0, 11),
                new java.awt.Color(51, 51, 255))); // NOI18N

        jLabel2.setText("Nmero de datos a simular * :");

        jTextField_numeroDatosSimular.setToolTipText("Cantidad de numeros a generar aleatoriamente");
        jTextField_numeroDatosSimular.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jTextField_numeroDatosSimularActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout
                .setHorizontalGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addGroup(jPanel1Layout.createSequentialGroup().addContainerGap().addComponent(jLabel2)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(jTextField_numeroDatosSimular, javax.swing.GroupLayout.PREFERRED_SIZE,
                                        131, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)));
        jPanel1Layout.setVerticalGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(jPanel1Layout.createSequentialGroup().addContainerGap().addGroup(jPanel1Layout
                        .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE).addComponent(jLabel2)
                        .addComponent(jTextField_numeroDatosSimular, javax.swing.GroupLayout.PREFERRED_SIZE,
                                javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)));

        jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Parmetros",
                javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
                javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 0, 11),
                new java.awt.Color(0, 51, 255))); // NOI18N

        jLabel3.setText("Media * :");

        jLabel4.setText("Desviacin estandar * :");

        jTextField_media.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jTextField_mediaActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
        jPanel2.setLayout(jPanel2Layout);
        jPanel2Layout.setHorizontalGroup(jPanel2Layout
                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(jPanel2Layout.createSequentialGroup().addContainerGap().addComponent(jLabel3)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(jTextField_media, javax.swing.GroupLayout.PREFERRED_SIZE, 100,
                                javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED).addComponent(jLabel4)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(jTextField_desviacionEstandar, javax.swing.GroupLayout.PREFERRED_SIZE, 100,
                                javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)));
        jPanel2Layout.setVerticalGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(jPanel2Layout.createSequentialGroup().addContainerGap().addGroup(jPanel2Layout
                        .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE).addComponent(jLabel3)
                        .addComponent(jTextField_media, javax.swing.GroupLayout.PREFERRED_SIZE,
                                javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addComponent(jLabel4).addComponent(jTextField_desviacionEstandar,
                                javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
                                javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)));

        jPanel3.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "variables de control",
                javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
                javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 0, 11),
                new java.awt.Color(0, 51, 255))); // NOI18N

        jLabel5.setText("Limite de control inferior * :");

        jLabel6.setText("Limite de control superior * :");

        javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
        jPanel3.setLayout(jPanel3Layout);
        jPanel3Layout.setHorizontalGroup(jPanel3Layout
                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(jPanel3Layout.createSequentialGroup().addContainerGap()
                        .addComponent(jLabel5, javax.swing.GroupLayout.PREFERRED_SIZE, 154,
                                javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jTextField_limiteDeControlInferior, javax.swing.GroupLayout.PREFERRED_SIZE,
                                112, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(18, 18, 18).addComponent(jLabel6)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(jTextField_limiteDeControlSuperior, javax.swing.GroupLayout.PREFERRED_SIZE,
                                100, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addContainerGap(85, Short.MAX_VALUE)));
        jPanel3Layout.setVerticalGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(jPanel3Layout.createSequentialGroup().addContainerGap().addGroup(jPanel3Layout
                        .createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE).addComponent(jLabel5)
                        .addComponent(jTextField_limiteDeControlInferior, javax.swing.GroupLayout.PREFERRED_SIZE,
                                javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addComponent(jLabel6).addComponent(jTextField_limiteDeControlSuperior,
                                javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
                                javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)));

        jPanel4.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Resultados",
                javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
                javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 0, 11),
                new java.awt.Color(0, 51, 255))); // NOI18N

        jLabel7.setText("ARL :");
        jLabel7.setToolTipText("Average Run Length - Longitud Promedio de Corrida");

        jLabel_arl.setText("0");

        jLabel8.setText("Media :");

        jLabel9.setText("Cantidad datos fuera de limite :");

        jLabel_media.setText("0");

        jLabel_cantidadDatosFueraDeLimite.setText("0");

        jLabel12.setText("Limites :");

        jLabel_limites.setText("( , )");

        jLabel13.setText("Tiempo Gen. Numeros :");

        jLabel_tiempoEjecucionGeneracionNumeros.setText("0 segundos");

        jLabel15.setText("Tiempo Calculos ARL :");

        jLabel_tiempoEjecucionCalculoArl.setText("0 segundos");

        javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(jPanel4);
        jPanel4.setLayout(jPanel4Layout);
        jPanel4Layout.setHorizontalGroup(jPanel4Layout
                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(jPanel4Layout.createSequentialGroup().addContainerGap().addGroup(jPanel4Layout
                        .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addGroup(jPanel4Layout.createSequentialGroup().addComponent(jLabel7)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                .addComponent(jLabel_arl, javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                        .addGroup(jPanel4Layout.createSequentialGroup().addComponent(jLabel9)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED).addComponent(
                                        jLabel_cantidadDatosFueraDeLimite, javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                        .addGroup(jPanel4Layout.createSequentialGroup().addComponent(jLabel8)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                .addComponent(jLabel_media, javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                        .addGroup(jPanel4Layout.createSequentialGroup().addComponent(jLabel12)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                .addComponent(jLabel_limites, javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                        .addGroup(jPanel4Layout.createSequentialGroup().addComponent(jLabel13)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                .addComponent(jLabel_tiempoEjecucionGeneracionNumeros,
                                        javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
                                        Short.MAX_VALUE))
                        .addGroup(jPanel4Layout.createSequentialGroup().addComponent(jLabel15).addGap(18, 18, 18)
                                .addComponent(jLabel_tiempoEjecucionCalculoArl,
                                        javax.swing.GroupLayout.DEFAULT_SIZE, 123, Short.MAX_VALUE)))
                        .addContainerGap()));
        jPanel4Layout.setVerticalGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(jPanel4Layout.createSequentialGroup().addGap(7, 7, 7)
                        .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                .addComponent(jLabel12).addComponent(jLabel_limites))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                .addComponent(jLabel8).addComponent(jLabel_media))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                .addComponent(jLabel9).addComponent(jLabel_cantidadDatosFueraDeLimite))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                .addComponent(jLabel7).addComponent(jLabel_arl))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                .addComponent(jLabel13).addComponent(jLabel_tiempoEjecucionGeneracionNumeros))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                .addComponent(jLabel15).addComponent(jLabel_tiempoEjecucionCalculoArl))
                        .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)));

        jPanel5.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Acciones",
                javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
                javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 0, 11),
                new java.awt.Color(0, 51, 255))); // NOI18N

        jButton_ejecutarSimulacion.setText("Ejecutar Simulacin");
        jButton_ejecutarSimulacion.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton_ejecutarSimulacionActionPerformed(evt);
            }
        });

        jButton_guardarResultadosEnExcel.setText("Guardar Datos (Excel)");
        jButton_guardarResultadosEnExcel.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton_guardarResultadosEnExcelActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanel5Layout = new javax.swing.GroupLayout(jPanel5);
        jPanel5.setLayout(jPanel5Layout);
        jPanel5Layout.setHorizontalGroup(jPanel5Layout
                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(jPanel5Layout.createSequentialGroup().addContainerGap()
                        .addComponent(jButton_ejecutarSimulacion, javax.swing.GroupLayout.PREFERRED_SIZE, 156,
                                javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(18, 18, 18)
                        .addComponent(jButton_guardarResultadosEnExcel, javax.swing.GroupLayout.PREFERRED_SIZE, 181,
                                javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)));
        jPanel5Layout.setVerticalGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(jPanel5Layout.createSequentialGroup().addContainerGap()
                        .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                .addComponent(jButton_ejecutarSimulacion)
                                .addComponent(jButton_guardarResultadosEnExcel))
                        .addContainerGap(19, Short.MAX_VALUE)));

        jPanel6.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Datos de simulacin",
                javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
                javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 0, 11),
                new java.awt.Color(0, 51, 255))); // NOI18N

        jTable_tablaDeDatos.setModel(new javax.swing.table.DefaultTableModel(new Object[][] {

        }, new String[] {

        }));
        jScrollPane1.setViewportView(jTable_tablaDeDatos);

        javax.swing.GroupLayout jPanel6Layout = new javax.swing.GroupLayout(jPanel6);
        jPanel6.setLayout(jPanel6Layout);
        jPanel6Layout.setHorizontalGroup(
                jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(jPanel6Layout
                        .createSequentialGroup().addContainerGap().addComponent(jScrollPane1).addContainerGap()));
        jPanel6Layout.setVerticalGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(jPanel6Layout.createSequentialGroup().addContainerGap()
                        .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 54, Short.MAX_VALUE)
                        .addContainerGap()));

        jPanel7.setBorder(javax.swing.BorderFactory.createTitledBorder("Informacin"));

        jLabel_barraDeEstado.setForeground(new java.awt.Color(255, 0, 0));
        jLabel_barraDeEstado.setText("Sin mensajes...");

        javax.swing.GroupLayout jPanel7Layout = new javax.swing.GroupLayout(jPanel7);
        jPanel7.setLayout(jPanel7Layout);
        jPanel7Layout
                .setHorizontalGroup(
                        jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                .addGroup(jPanel7Layout.createSequentialGroup().addContainerGap()
                                        .addComponent(jLabel_barraDeEstado, javax.swing.GroupLayout.PREFERRED_SIZE,
                                                628, javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                        .addComponent(jProgressBar_progreso, javax.swing.GroupLayout.DEFAULT_SIZE,
                                                javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                        .addContainerGap()));
        jPanel7Layout.setVerticalGroup(jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(jPanel7Layout.createSequentialGroup().addGap(0, 0, 0)
                        .addGroup(jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                .addComponent(jProgressBar_progreso, javax.swing.GroupLayout.PREFERRED_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addComponent(jLabel_barraDeEstado))
                        .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)));

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup().addContainerGap().addGroup(layout
                        .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addComponent(jPanel6, javax.swing.GroupLayout.DEFAULT_SIZE,
                                javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addComponent(jPanel7, javax.swing.GroupLayout.Alignment.TRAILING,
                                javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
                                Short.MAX_VALUE)
                        .addComponent(jPanel5, javax.swing.GroupLayout.DEFAULT_SIZE,
                                javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE,
                                javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addGroup(layout.createSequentialGroup()
                                .addGroup(layout
                                        .createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                                        .addComponent(jPanel1, javax.swing.GroupLayout.Alignment.LEADING,
                                                javax.swing.GroupLayout.DEFAULT_SIZE,
                                                javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                        .addComponent(jPanel3, javax.swing.GroupLayout.Alignment.LEADING,
                                                javax.swing.GroupLayout.DEFAULT_SIZE,
                                                javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                        .addComponent(jPanel2, javax.swing.GroupLayout.Alignment.LEADING,
                                                javax.swing.GroupLayout.DEFAULT_SIZE,
                                                javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                                .addGap(18, 18, 18).addComponent(jPanel4, javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                        .addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
                                layout.createSequentialGroup().addGap(817, 817, 817).addComponent(jLabel10,
                                        javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
                                        Short.MAX_VALUE)))
                        .addContainerGap()));
        layout.setVerticalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup().addGap(22, 22, 22).addComponent(jLabel1)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                                .addGroup(layout.createSequentialGroup()
                                        .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE,
                                                javax.swing.GroupLayout.DEFAULT_SIZE,
                                                javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                        .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE,
                                                javax.swing.GroupLayout.DEFAULT_SIZE,
                                                javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                        .addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE,
                                                javax.swing.GroupLayout.DEFAULT_SIZE,
                                                javax.swing.GroupLayout.PREFERRED_SIZE))
                                .addComponent(jPanel4, javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jPanel5, javax.swing.GroupLayout.PREFERRED_SIZE,
                                javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jPanel6, javax.swing.GroupLayout.DEFAULT_SIZE,
                                javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED).addComponent(jLabel10)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jPanel7, javax.swing.GroupLayout.PREFERRED_SIZE,
                                javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addContainerGap()));

        jPanel1.getAccessibleContext().setAccessibleName("Generacin datos");

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void jTextField_numeroDatosSimularActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jTextField_numeroDatosSimularActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_jTextField_numeroDatosSimularActionPerformed

    private void jTextField_mediaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jTextField_mediaActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_jTextField_mediaActionPerformed

    public void ejecutar() {

        jButton_ejecutarSimulacion.setEnabled(false);
        jButton_guardarResultadosEnExcel.setEnabled(false);

        Map parametrosGeneracionDatos = new HashMap();
        parametrosGeneracionDatos.put(Constante.NUMERO_DE_DATOS_GENERAR, jTextField_numeroDatosSimular.getText());
        parametrosGeneracionDatos.put(Constante.MEDIA, jTextField_media.getText());
        parametrosGeneracionDatos.put(Constante.DESVIACION_ESTANDAR, jTextField_desviacionEstandar.getText());
        parametrosGeneracionDatos.put(Constante.LIMITE_CONTROL_INFERIOR,
                Integer.parseInt(jTextField_limiteDeControlInferior.getText()));
        parametrosGeneracionDatos.put(Constante.LIMITE_CONTROL_SUPERIOR,
                Integer.parseInt(jTextField_limiteDeControlSuperior.getText()));

        mensaje(Constante.GENERANDO_NUMEROS_ALEATORIOS);
        Map resultadoGeneracionDeDatos = Calculo
                .generarDatosAleatoriosConDistribucionNormal(parametrosGeneracionDatos);

        Boolean generacionNumerosEjecutado = Boolean.valueOf(resultadoGeneracionDeDatos
                .get(Constante.GENERACION_DATOS_CON_DISTRIBUACION_NORMAL_EJECUTADO).toString());

        if (generacionNumerosEjecutado) {
            String mensaje = resultadoGeneracionDeDatos
                    .get(Constante.MENSAJE_GENERACION_DATOS_CON_DISTRIBUACION_NORMAL).toString();
            mensaje(mensaje);

            List<Dato> datosGenerados = (List<Dato>) resultadoGeneracionDeDatos
                    .get(Constante.LISTA_DATOS_GENERADOS);

            /** Seteo los datos [Datos generados] en el Singleton para tenerlos en memoria con el objetivo de generar el excel.
             */
            DatosExcelSingleton.getInstance().setListaDatosExcel(datosGenerados);

            mensaje(Constante.REALIZANDO_CALCULOS_DE_RESULTADOS);
            Map resultadoCalculoARL = Calculo.calcularLongitudPromedioDeCorrida(datosGenerados);

            /** Agrego datos de limites de control. */
            resultadoCalculoARL.put(Constante.LIMITE_CONTROL_INFERIOR,
                    Integer.parseInt(jTextField_limiteDeControlInferior.getText()));
            resultadoCalculoARL.put(Constante.LIMITE_CONTROL_SUPERIOR,
                    Integer.parseInt(jTextField_limiteDeControlSuperior.getText()));

            /** Seteo los datos [Resultados] en el Singleton para tenerlos en memoria con el objetivo de generar el excel.
             */
            DatosExcelSingleton.getInstance().setResultadosDeCalculo(resultadoCalculoARL);

            Boolean calculoArlEjecutado = Boolean
                    .valueOf(resultadoCalculoARL.get(Constante.CALCULO_ARL_EJECUTADO).toString());

            if (calculoArlEjecutado) {
                String mensaje2 = resultadoCalculoARL.get(Constante.MENSAJE_CALCULO_ARL).toString();
                mensaje(mensaje2);

                /** Obtener resultados */
                double mediaDatosQueSuperanLimites = Double
                        .parseDouble(resultadoCalculoARL.get(Constante.MEDIA_DATOS_EXTREMOS).toString());
                double cantidaDatosQueSuperanLimites = Double
                        .parseDouble(resultadoCalculoARL.get(Constante.CANTIDAD_DATOS_EXTREMOS).toString());
                double arlFinal = Double
                        .parseDouble(resultadoCalculoARL.get(Constante.AVERAGE_RUN_LENGTH).toString());
                long tiempoEjecucionGenNumeros = Long
                        .parseLong(resultadoGeneracionDeDatos.get(Constante.TIEMPO_DE_EJECUCION).toString());
                long tiempoEjecucionCalculoArl = Long
                        .parseLong(resultadoCalculoARL.get(Constante.TIEMPO_DE_EJECUCION).toString());

                /** Mostrar datos generados */
                Object[] unaFila = new Object[4];
                for (int i = 0; i < datosGenerados.size(); i++) {
                    unaFila[0] = datosGenerados.get(i).getSecuencial();
                    unaFila[1] = datosGenerados.get(i).getNumero();
                    unaFila[2] = datosGenerados.get(i).isSobrePasaLimiteInferior();
                    unaFila[3] = datosGenerados.get(i).isSobrePasaLimiteSuperior();
                    modeloTabla.addRow(unaFila);
                }
                jTable_tablaDeDatos.setModel(modeloTabla);

                jLabel_media.setText("" + mediaDatosQueSuperanLimites);
                jLabel_cantidadDatosFueraDeLimite.setText("" + cantidaDatosQueSuperanLimites);
                jLabel_arl.setText("" + arlFinal);
                jLabel_tiempoEjecucionGeneracionNumeros
                        .setText("" + TimeUnit.MILLISECONDS.toSeconds(tiempoEjecucionGenNumeros) + " Seg. "
                                + tiempoEjecucionGenNumeros + " Mili.");
                jLabel_tiempoEjecucionCalculoArl
                        .setText("" + TimeUnit.MILLISECONDS.toSeconds(tiempoEjecucionCalculoArl) + " Seg. "
                                + tiempoEjecucionCalculoArl + " Mili.");

                jButton_ejecutarSimulacion.setEnabled(true);

            } else {
                String mensaje2 = resultadoCalculoARL.get(Constante.MENSAJE_CALCULO_ARL).toString();
                mensaje(mensaje2);
            }

        } else {
            String mensaje = resultadoGeneracionDeDatos
                    .get(Constante.MENSAJE_GENERACION_DATOS_CON_DISTRIBUACION_NORMAL).toString();
            mensaje(mensaje);
        }

    }

    class Progreso extends SwingWorker<Void, Void> {

        @Override
        protected Void doInBackground() throws Exception {
            jProgressBar_progreso.setIndeterminate(true);
            ejecutar();
            return null;
        }

        @Override
        public void done() {
            jProgressBar_progreso.setIndeterminate(false);
            jButton_ejecutarSimulacion.setEnabled(true);
            jButton_guardarResultadosEnExcel.setEnabled(true);
            mensaje(Constante.TERMINADO);
        }

    }

    /**
     * Iniciar ejecuacion de la simulacion.
     */
    private void jButton_ejecutarSimulacionActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton_ejecutarSimulacionActionPerformed
        if (camposValidos()) {

            jLabel_limites.setText("( " + jTextField_limiteDeControlInferior.getText() + " , "
                    + jTextField_limiteDeControlSuperior.getText() + " )");
            jLabel_media.setText("0");
            jLabel_cantidadDatosFueraDeLimite.setText("0");
            jLabel_arl.setText("0");
            jLabel_tiempoEjecucionCalculoArl.setText("0 seg. 0 mili.");
            jLabel_tiempoEjecucionGeneracionNumeros.setText("0 seg. 0 mili.");

            jTable_tablaDeDatos.setModel(modeloTabla);

            try {
                progreso = new Progreso();
                progreso.execute();
            } catch (Exception ex) {
                Logger.getLogger(VentanaPrincipal.class.getName()).log(Level.SEVERE, null, ex);
            }
        } else {
            jButton_ejecutarSimulacion.setEnabled(true);
        }

    }//GEN-LAST:event_jButton_ejecutarSimulacionActionPerformed

    private void jButton_guardarResultadosEnExcelActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton_guardarResultadosEnExcelActionPerformed
        // TODO add your handling code here:
        jButton_ejecutarSimulacion.setEnabled(false);
        jButton_guardarResultadosEnExcel.setEnabled(false);
        mensaje(Constante.GENERANDO_ARCHIVO_EXCEL_CON_RESULTADOS_ESPERE);
        obtenerRutaGuardarArchivo();
        jButton_ejecutarSimulacion.setEnabled(true);
        jButton_guardarResultadosEnExcel.setEnabled(true);
    }//GEN-LAST:event_jButton_guardarResultadosEnExcelActionPerformed

    private void obtenerRutaGuardarArchivo() {
        try {
            JFileChooser file = new JFileChooser();
            file.showSaveDialog(this);
            File guarda = file.getSelectedFile();

            if (guarda != null) {

                String nombreArchivo = guarda.getAbsolutePath() + Constante.XLS;

                HSSFWorkbook workbook = new HSSFWorkbook();
                HSSFSheet hojaUnoDatosGenerados = workbook.createSheet(Constante.TITULO_HOJA_DATOS);
                HSSFSheet hojaDosDatosResultados = workbook.createSheet(Constante.TITULO_HOJA_RESULTADOS);

                List<Dato> datosGenerados = DatosExcelSingleton.getInstance().getListaDatosExcel();
                Map resultadosCalculo = DatosExcelSingleton.getInstance().getResultadosDeCalculo();

                HSSFRow rowhead = hojaUnoDatosGenerados.createRow((short) 0);
                /** Encabezado hoja uno. */
                rowhead.createCell(0).setCellValue(Constante.INDICE);
                rowhead.createCell(1).setCellValue(Constante.DATO_ALEATORIO);
                rowhead.createCell(2).setCellValue(Constante.SUPERA_LIMITE_INFERIOR);
                rowhead.createCell(3).setCellValue(Constante.SUPERA_LIMITE_SUPERIOR);

                HSSFRow rowheadHojaDos = hojaDosDatosResultados.createRow((short) 0);
                /** Encabezado hoja dos. */
                rowheadHojaDos.createCell(0).setCellValue(Constante.COLUMNA_LIMITE_INFERIOR);
                rowheadHojaDos.createCell(1).setCellValue(Constante.COLUMNA_LIMITE_SUPERIOR);
                rowheadHojaDos.createCell(2).setCellValue(Constante.COLUMNA_MEDIA);
                rowheadHojaDos.createCell(3).setCellValue(Constante.COLUMNA_DATOS_FUERA_LIMITE);
                rowheadHojaDos.createCell(4).setCellValue(Constante.COLUMNA_ARL);

                /**
                 * Escribir en hoja uno.
                 */
                HSSFRow row = null;
                int fila = 1;
                for (int i = 0; i < datosGenerados.size(); i++) {
                    row = hojaUnoDatosGenerados.createRow(fila++);
                    row.createCell(0).setCellValue(datosGenerados.get(i).getSecuencial());
                    row.createCell(1).setCellValue(datosGenerados.get(i).getNumero());
                    row.createCell(2).setCellValue(datosGenerados.get(i).isSobrePasaLimiteInferior());
                    row.createCell(3).setCellValue(datosGenerados.get(i).isSobrePasaLimiteSuperior());
                }

                /** 
                 * Escribir en hoja dos.
                 */
                HSSFRow filaResultados = null;
                filaResultados = hojaDosDatosResultados.createRow(1);
                filaResultados.createCell(0)
                        .setCellValue(resultadosCalculo.get(Constante.LIMITE_CONTROL_INFERIOR).toString());
                filaResultados.createCell(1)
                        .setCellValue(resultadosCalculo.get(Constante.LIMITE_CONTROL_SUPERIOR).toString());
                filaResultados.createCell(2)
                        .setCellValue(resultadosCalculo.get(Constante.MEDIA_DATOS_EXTREMOS).toString());
                filaResultados.createCell(3)
                        .setCellValue(resultadosCalculo.get(Constante.CANTIDAD_DATOS_EXTREMOS).toString());
                filaResultados.createCell(4)
                        .setCellValue(resultadosCalculo.get(Constante.AVERAGE_RUN_LENGTH).toString());

                /**
                 * Ajustar columnas hoja uno.
                 */
                hojaUnoDatosGenerados.autoSizeColumn(0);
                hojaUnoDatosGenerados.autoSizeColumn(1);
                hojaUnoDatosGenerados.autoSizeColumn(2);
                hojaUnoDatosGenerados.autoSizeColumn(3);

                /**
                 * Ajustar columnas hoja dos.
                 */
                hojaDosDatosResultados.autoSizeColumn(0);
                hojaDosDatosResultados.autoSizeColumn(1);
                hojaDosDatosResultados.autoSizeColumn(2);
                hojaDosDatosResultados.autoSizeColumn(3);
                hojaDosDatosResultados.autoSizeColumn(4);

                try (FileOutputStream fileOut = new FileOutputStream(nombreArchivo)) {
                    workbook.write(fileOut);
                } catch (Exception e) {
                    throw new Exception("Error al escribir el archivo. Intente de nuevo.");
                }
                mensaje(Constante.ARCHIVO_EXCEL_CON_RESULTADOS_GENERADO);
                JOptionPane.showMessageDialog(null, "El archivo se ha guardado Exitosamente.", "Informacin",
                        JOptionPane.INFORMATION_MESSAGE);
            } else {
                mensaje("Debe seleccionar una ruta valida e ingresar el nombre del archivo.");
                JOptionPane.showMessageDialog(null,
                        "Debe seleccionar una ruta valida e ingresar el nombre del archivo.", "Advertencia",
                        JOptionPane.WARNING_MESSAGE);
            }
        } catch (Exception ex) {
            mensaje("Error al generar el archivo.Intentelo de nuevo.");
            JOptionPane.showMessageDialog(null, "Su archivo no se ha guardado", "Advertencia",
                    JOptionPane.WARNING_MESSAGE);
        }
    }

    /**
     * Validar campos y parametros obligatorios.
     */
    private boolean camposValidos() {
        mensaje(Constante.VALIDANDO_CAMPOS);
        boolean resultadoValidacion = false;
        String numeroDatosSimular = jTextField_numeroDatosSimular.getText();
        String media = null;
        String desviacionEstandar = null;
        String limiteControlInferior = null;
        String limiteControlSuperior = null;

        if (Util.esNuloOVacio(numeroDatosSimular)) {
            mensaje(Constante.FALTA_NUMERO_DE_DATOS_POR_COMPLETAR);
        } else {
            media = jTextField_media.getText();
            if (Util.esNuloOVacio(media)) {
                mensaje(Constante.FALTA_MEDIA_POR_COMPLETAR);
            } else {
                desviacionEstandar = jTextField_desviacionEstandar.getText();
                if (Util.esNuloOVacio(desviacionEstandar)) {
                    mensaje(Constante.FALTA_DESVIACION_ESTANDAR_POR_COMPLETAR);
                } else {
                    limiteControlInferior = jTextField_limiteDeControlInferior.getText();
                    if (Util.esNuloOVacio(limiteControlInferior)) {
                        mensaje(Constante.FALTA_LIMITE_CONTROL_INFERIOR_POR_COMPLETAR);
                    } else {
                        limiteControlSuperior = jTextField_limiteDeControlSuperior.getText();
                        if (Util.esNuloOVacio(limiteControlSuperior)) {
                            mensaje(Constante.FALTA_LIMITE_CONTROL_SUPERIOR_POR_COMPLETAR);
                        } else {
                            try {
                                int inLimiteControlInferior = Integer.parseInt(limiteControlInferior);
                                int inLimiteControlSuperior = Integer.parseInt(limiteControlSuperior);

                                if (inLimiteControlInferior >= inLimiteControlSuperior) {
                                    mensaje(Constante.LIMITE_INFERIOR_MAYOR_A_LIMITE_INFERIOR);
                                } else {
                                    resultadoValidacion = true;
                                }
                            } catch (Exception e) {
                                mensaje(Constante.ERROR_AL_CONVERTIR_LOS_LIMITES);
                            }
                        }
                    }
                }
            }
        }

        return resultadoValidacion;
    }

    private void mensaje(String mensaje) {
        jLabel_barraDeEstado.setText(mensaje);
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(VentanaPrincipal.class.getName()).log(java.util.logging.Level.SEVERE,
                    null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(VentanaPrincipal.class.getName()).log(java.util.logging.Level.SEVERE,
                    null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(VentanaPrincipal.class.getName()).log(java.util.logging.Level.SEVERE,
                    null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(VentanaPrincipal.class.getName()).log(java.util.logging.Level.SEVERE,
                    null, ex);
        }
        //</editor-fold>

        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
                    VentanaPrincipal ventanaPrincipal = new VentanaPrincipal();
                    ventanaPrincipal.setLocationRelativeTo(null);
                    ventanaPrincipal.setVisible(true);
                } catch (ClassNotFoundException ex) {
                    Logger.getLogger(VentanaPrincipal.class.getName()).log(Level.SEVERE, null, ex);
                } catch (InstantiationException ex) {
                    Logger.getLogger(VentanaPrincipal.class.getName()).log(Level.SEVERE, null, ex);
                } catch (IllegalAccessException ex) {
                    Logger.getLogger(VentanaPrincipal.class.getName()).log(Level.SEVERE, null, ex);
                } catch (UnsupportedLookAndFeelException ex) {
                    Logger.getLogger(VentanaPrincipal.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        });
    }

    private Progreso progreso;
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton jButton_ejecutarSimulacion;
    private javax.swing.JButton jButton_guardarResultadosEnExcel;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel10;
    private javax.swing.JLabel jLabel12;
    private javax.swing.JLabel jLabel13;
    private javax.swing.JLabel jLabel15;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JLabel jLabel6;
    private javax.swing.JLabel jLabel7;
    private javax.swing.JLabel jLabel8;
    private javax.swing.JLabel jLabel9;
    private javax.swing.JLabel jLabel_arl;
    private javax.swing.JLabel jLabel_barraDeEstado;
    private javax.swing.JLabel jLabel_cantidadDatosFueraDeLimite;
    private javax.swing.JLabel jLabel_limites;
    private javax.swing.JLabel jLabel_media;
    private javax.swing.JLabel jLabel_tiempoEjecucionCalculoArl;
    private javax.swing.JLabel jLabel_tiempoEjecucionGeneracionNumeros;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JPanel jPanel3;
    private javax.swing.JPanel jPanel4;
    private javax.swing.JPanel jPanel5;
    private javax.swing.JPanel jPanel6;
    private javax.swing.JPanel jPanel7;
    private javax.swing.JProgressBar jProgressBar_progreso;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTable jTable_tablaDeDatos;
    private javax.swing.JTextField jTextField_desviacionEstandar;
    private javax.swing.JTextField jTextField_limiteDeControlInferior;
    private javax.swing.JTextField jTextField_limiteDeControlSuperior;
    private javax.swing.JTextField jTextField_media;
    private javax.swing.JTextField jTextField_numeroDatosSimular;
    // End of variables declaration//GEN-END:variables
}