Proyecto 2: Gráficas en Pestañas
Objetivo
El objetivo es crear una aplicación que permita al usuario ingresar datos numéricos en un JTextField, y al presionar un botón (JButton), estos datos se visualicen en un gráfico de líneas utilizando JFreeChart. La aplicación tendrá una interfaz con pestañas (JTabbedPane), donde en una pestaña se ingresarán los datos y en otra se mostrará el gráfico. Además, se incluirá un JSlider para ajustar el rango del eje Y del gráfico y un JScrollBar para desplazar el gráfico horizontalmente.
La aplicación tendrá cuatro pestañas:
Ingreso de Datos: Permite al usuario ingresar datos numéricos para generar gráficos.
Gráfico de Líneas: Muestra un gráfico de líneas con los datos ingresados.
Gráfico de Barras: Muestra un gráfico de barras con los mismos datos.
Gráfico Circular: Muestra un gráfico de tarta con los datos.
Además, se agregarán componentes como:
JComboBox: Para seleccionar el tipo de gráfico a generar.
JCheckBox: Para habilitar o deshabilitar la leyenda del gráfico.
JRadioButton: Para elegir la orientación del gráfico de barras (horizontal o vertical).
Desarrollo
Diseño de la Interfaz
Crea un nuevo proyecto en IntelliJ IDEA.
Agrega las dependencias de JFreeChart mediante Maven, siguiendo las siguientes instrucciones:
Da clic derecho en el proyecto y selecciona
Open Module Settings.En la ventana de configuración, selecciona
Librariesy da clic en el botón+.Selecciona
From Maven...y buscaorg.jfree:jfreechart:1.5.5yorg.jfree:jcommon:1.0.24.Da clic en
OKpara agregar las dependencias.
Crea una nueva ventana mediante el editor de formularios de IntelliJ IDEA.
Agrega un
JTabbedPaney cuatro pestañas.En la primera pestaña, realiza lo siguiente:
Agrega un
JTabelpara mostrar los datos ingresados.Agrega un
JLabeldebajo de la tabla con el texto "Seleccione la temperatura".Agrega un
JLabelcon el texto "Temperatura (C°)".Agrega un
JSliderpara ajustar el rango del eje Y del gráfico.El rango será de 0 a 100 grados.
El valor inicial será 0 grados.
EL major tick será de 10 grados.
El minor tick será de 1 grado.
Marcaremos las opciones:
paintTicks,paintLabelsysnapToTicks.
Agrega un
JBottoncon el texto "Agregar" y el nombreaddData.
En la segunda pestaña realiza lo siguiente:
Agrega un
JPanelpara mostrar el gráfico de líneas.Haz que el
JPanelesté envuelto en unJScrollPaney nómbralochartPanel.Agrega un
JComboBoxcon las opciones "Líneas", "Barras" y "Circular" y el nombrechartType.Agrega un
JCheckBoxcon el texto "Mostrar leyenda" y el nombreshowLegend.Agrega un
JButtoncon el texto "Generar gráfico" y el nombregenerateChart.
En la tercera pestaña realiza lo siguiente:
Agrega un
JPanelpara mostrar el gráfico de barras.Haz que el
barChartPanelesté envuelto en unJScrollPaney nómbralobarChartPanel.Agrega un
JRadioButtoncon el texto "Vertical" y el nombrevertical.Agrega un
JRadioButtoncon el texto "Horizontal" y el nombrehorizontal.Seleccione ambos botones de radio y agrúpalos en un
ButtonGroupllamadoorientationGroup.En la vista de diseño, selecciona la opción
Button Groupsy seleccionaorientationGroupy dentro de este selecciona la opciónBind to field.Agrega un
JButtoncon el texto "Generar gráfico" y el nombregenerateBarChart.
En la cuarta pestaña realiza lo siguiente:
Agrega un
JPanelpara mostrar el gráfico circular.Haz que el
pieChartPanelesté envuelto en unJScrollPaney nómbralopieChartPanel.Agrega un
JButtoncon el texto "Generar gráfico" y el nombregeneratePieChart.
Con esto, la interfaz de la aplicación estará lista para ser programada.
Configurando la Tabla
Para configurar la tabla, crearemos un modelo de tabla personalizado que permita mostrar los datos ingresados por el usuario. Para ello, crearemos una clase llamada TemperatureTableModel que extienda de AbstractTableModel y sobreescribiremos los métodos getRowCount, getColumnCount, getValueAt y getColumnName.
Para ello daremos clic derecho en la carpeta src y seleccionaremos New -> Java Class. En el cuadro de diálogo escribiremos el nombre TemperatureTableModel y daremos clic en OK. A continuación, escribiremos el siguiente código para agregar un modelo de tabla personalizado que contengan dos columnas: ID y Temperatura.
Una vez creada la clase, primero deberemos de entrar al modo de diseño y seleccionar el componente JTable y en la pestaña de propiedades, en el campo Model seleccionaremos la opción Custom Create, esto generará la función createUIComponents() en la clase principal, en esta función generaremos una instancia de la clase TemperatureTableModel y la asignaremos al modelo de la tabla.
Con esto, la tabla estará lista para mostrar los datos ingresados por el usuario.
Agregando el evento del botón "Agregar"
Para agregar el evento del botón "Agregar", primero crearemos la función addRowToTable que permitirá obtener el valor del JSlider y agregarlo a la tabla, de la siguiente manera:
Posteriormente crearemos la función addActions que permitirá agregar este y el resto de los eventos a los componentes de la aplicación, de la siguiente manera:
Por último haremos una llamada a la función addActions en el constructor de la clase principal, de la siguiente manera:
Con esto, el evento del botón "Agregar" estará listo para ser utilizado.
Generando el Gráfico de Líneas
Para generar el gráfico de líneas, primero crearemos las funciónes createLineChart, createBarChart y createPieChart que permitirán crear un gráfico de líneas, barras o circular con los datos ingresados por el usuario, de la siguiente manera:
Posteriormente crearemos las funciónes createDataset y createPieDataset() que permitirán crear un conjunto de datos con los datos ingresados por el usuario, de la siguiente manera:
Posteriormente, crearemos la función addChartPanel que permitirá agregar el gráfico de líneas al panel chartPanel, de la siguiente manera:
Por último agregaremos el evento del botón "Generar gráfico" que permitirá generar el gráfico de líneas, de la siguiente manera:
Con esto, el gráfico de líneas estará listo para ser generado.
Mostrando y ocultando la leyenda
Para mostrar y ocultar la leyenda del gráfico, crearemos la función addLegend que permitirá mostrar u ocultar la leyenda del gráfico, de la siguiente manera:
Posteriormente, modificaremos la función addChartPanel para que llame a la función addLegend y muestre u oculte la leyenda del gráfico, de la siguiente manera:
Con esto, la leyenda del gráfico podrá ser mostrada u ocultada.
Generando el Gráfico de Barras en formato Horizontal o Vertical
Ya contamos la función createBarChart que permite generar un gráfico de barras, ahora crearemos la función addOrientation que permitirá mostrar el gráfico de barras en formato horizontal o vertical, de la siguiente manera:
Posteriormente, crearemos la función addBarChartPanel que permitirá agregar el gráfico de barras al panel barChartPanel, de la siguiente manera:
Por último, agregaremos el evento del botón "Generar gráfico" que permitirá generar el gráfico de barras, de la siguiente manera:
Con esto, el gráfico de barras podrá ser generado en formato horizontal o vertical.
Generando el Gráfico Circular
Para generar el gráfico circular, crearemos la función addPieChartPanel que permitirá agregar el gráfico circular al panel pieChartPanel, de la siguiente manera:
Por último, agregaremos el evento del botón "Generar gráfico" que permitirá generar el gráfico circular, de la siguiente manera:
Con esto, el gráfico circular podrá ser generado.
Para la entrega
Realiza el desarrollo de la aplicación siguiendo los pasos anteriores.
Comprueba que la aplicación funcione correctamente.
Graba un video de la aplicación en funcionamiento.
Crea un archivo ZIP con el código fuente del proyecto.
Sube el video y el archivo ZIP a la plataforma.
Criterios de Evaluación
Criterio | Descripción | Puntaje |
|---|---|---|
Portada | Se anexa portada con datos del equipo. | 5% |
Código | El código fuente cumple con los requerimientos y está correctamente estructurado. | 30% |
Funcionalidad | La aplicación cumple con los requerimientos y funciona correctamente. | 30% |
Video | Se anexa video de la aplicación en funcionamiento. | 20% |
Entrega | Se anexa archivo ZIP con el código fuente del proyecto. | 15% |
Total | 100% |
Fecha de Entrega
La fecha de entrega de este entregable es el 28 de marzo de 2025 a las 23:59. Cualquier entrega después de esta fecha no será calificada.
Recuerda que la entrega se realizará a través de la plataforma Moodle.