From dc2cbeefbefa33105b3f978d4ad869136f2fecd0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=20Mu=C3=B1oz?= Date: Sat, 19 Apr 2025 16:33:30 +0200 Subject: [PATCH] feat(ch 9): List & Table models from DDBB controllers --- .../poblacionProvincial-EstructuraYDatos.sql | 12 +- .../PanelJFileChooserFicheroImagen.java | 3 +- .../PanelJList.java | 22 +- .../controller/ConnectionManager.java | 22 ++ .../controller/ControladorPersona.java | 49 ++++ .../controller/ControladorProvincia.java | 62 +++++ .../model/Persona.java | 113 ++++++++ .../model/Provincia.java | 38 +++ .../v06_EjemplosJTable/DatosDeTabla.java | 15 +- .../MiProvinciaTableCellEditor.java | 7 +- .../TablaEnScrollPane.java | 3 +- .../examen20250404/GestionBiblioteca.java | 246 ++++++++++++++++++ 12 files changed, 558 insertions(+), 34 deletions(-) create mode 100644 src/tutorialJava/capitulo9_AWT_SWING/v05_JListConDefaultListModel/controller/ConnectionManager.java create mode 100644 src/tutorialJava/capitulo9_AWT_SWING/v05_JListConDefaultListModel/controller/ControladorPersona.java create mode 100644 src/tutorialJava/capitulo9_AWT_SWING/v05_JListConDefaultListModel/controller/ControladorProvincia.java create mode 100644 src/tutorialJava/capitulo9_AWT_SWING/v05_JListConDefaultListModel/model/Persona.java create mode 100644 src/tutorialJava/capitulo9_AWT_SWING/v05_JListConDefaultListModel/model/Provincia.java create mode 100644 src/tutorialJava/examenes/examen20250404/GestionBiblioteca.java diff --git a/BBDDs/03_BBDD_PoblacionEnProvincia/poblacionProvincial-EstructuraYDatos.sql b/BBDDs/03_BBDD_PoblacionEnProvincia/poblacionProvincial-EstructuraYDatos.sql index 98dd175..00048c4 100644 --- a/BBDDs/03_BBDD_PoblacionEnProvincia/poblacionProvincial-EstructuraYDatos.sql +++ b/BBDDs/03_BBDD_PoblacionEnProvincia/poblacionProvincial-EstructuraYDatos.sql @@ -96,14 +96,4 @@ LOCK TABLES `sequence` WRITE; INSERT INTO `sequence` VALUES (20051,'SEQ_GEN'); /*!40000 ALTER TABLE `sequence` ENABLE KEYS */; UNLOCK TABLES; -/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; - -/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; -/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; -/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; -/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; -/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; -/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; -/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; - --- Dump completed on 2019-05-08 11:03:41 +/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; \ No newline at end of file diff --git a/src/tutorialJava/capitulo9_AWT_SWING/v03_JComponentsAvanzados/PanelJFileChooserFicheroImagen.java b/src/tutorialJava/capitulo9_AWT_SWING/v03_JComponentsAvanzados/PanelJFileChooserFicheroImagen.java index 3098075..eb5626d 100644 --- a/src/tutorialJava/capitulo9_AWT_SWING/v03_JComponentsAvanzados/PanelJFileChooserFicheroImagen.java +++ b/src/tutorialJava/capitulo9_AWT_SWING/v03_JComponentsAvanzados/PanelJFileChooserFicheroImagen.java @@ -173,7 +173,8 @@ public class PanelJFileChooserFicheroImagen extends JPanel { Connection conexion = (Connection) DriverManager.getConnection ("jdbc:mysql://localhost/centroeducativo?serverTimezone=UTC","java", "Abcdefgh.1"); PreparedStatement ps = (PreparedStatement) conexion. - prepareStatement("UPDATE centroeducativo.estudiante set imagen=? where id=?"); + prepareStatement("UPDATE centroeducativo.estudiante " + + "set imagen=? where id=?"); ps.setBytes(1, imagenEnArrayDeBytes); ps.setInt(2, 1); diff --git a/src/tutorialJava/capitulo9_AWT_SWING/v05_JListConDefaultListModel/PanelJList.java b/src/tutorialJava/capitulo9_AWT_SWING/v05_JListConDefaultListModel/PanelJList.java index f8757aa..eb6e4c3 100644 --- a/src/tutorialJava/capitulo9_AWT_SWING/v05_JListConDefaultListModel/PanelJList.java +++ b/src/tutorialJava/capitulo9_AWT_SWING/v05_JListConDefaultListModel/PanelJList.java @@ -4,8 +4,8 @@ import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.ListSelectionModel; -import tutorialJava.modelosBasesDeDatosComunesJPA.poblacionPorProvincias.Provincia; -import tutorialJava.modelosBasesDeDatosComunesJPA.poblacionPorProvincias.controladores.ProvinciaControlador; +import tutorialJava.capitulo9_AWT_SWING.v05_JListConDefaultListModel.controller.ControladorProvincia; +import tutorialJava.capitulo9_AWT_SWING.v05_JListConDefaultListModel.model.Provincia; import java.awt.GridBagLayout; @@ -24,11 +24,11 @@ public class PanelJList extends JPanel { // Elemento JList a utilizar en el ejemplo private JList jlistProvincias; - // Modelo del elemento JList, necesario para que podamos c�modamente agregar y eliminar elementos + // Modelo del elemento JList, necesario para que podamos cómodamente agregar y eliminar elementos private DefaultListModel listModelProvincias = null; // Lista de todas las provincias de la BBDD, para incluir en el elemento JList - private List provincias = ProvinciaControlador.getControlador().findAllProvincias(); - // �ndice de la �ltima provincia agregada, para saber cu�l debe ser la siguiente provincia a agregar + private List provincias = ControladorProvincia.findAll(); + // Ìndice de la última provincia agregada, para saber cuál debe ser la siguiente provincia a agregar private int indiceProximaProvinciaParaAgregar = 0; /** @@ -50,8 +50,8 @@ public class PanelJList extends JPanel { gbc_lblEjemploDeUso.gridy = 0; add(lblEjemploDeUso, gbc_lblEjemploDeUso); - // La JList debe ir dentro de un ScrollPane, y se construye con el modelo de JList sobre el que despu�s - // se agregar�n o eliminar�n provincias. + // La JList debe ir dentro de un ScrollPane, y se construye con el modelo de JList sobre el que después + // se agregarán o eliminarán provincias. jlistProvincias = new JList(this.getDefaultListModel()); // Tipos de selecci�n disponibles en JList //this.jlistProvincias.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); @@ -96,7 +96,7 @@ public class PanelJList extends JPanel { /** - * M�todo que construye el modelo de JList, a utilizar para agregar y eliminar provincias + * Método que construye el modelo de JList, a utilizar para agregar y eliminar provincias */ private DefaultListModel getDefaultListModel () { this.listModelProvincias = new DefaultListModel(); @@ -108,16 +108,16 @@ public class PanelJList extends JPanel { */ private void agregarProvincia () { this.listModelProvincias.addElement(this.provincias.get(this.indiceProximaProvinciaParaAgregar)); - // Aumento el �ndice de la pr�xima provincia a agregar + // Aumento el índice de la próxima provincia a agregar this.indiceProximaProvinciaParaAgregar++; - // Si sobrepasa el l�mite de las provincias posibles, reiniciamos a valor 0 (cero) el �ndice de la pr�xima provincia a agregar + // Si sobrepasa el límite de las provincias posibles, reiniciamos a valor 0 (cero) el índice de la próxima provincia a agregar if (this.indiceProximaProvinciaParaAgregar == this.provincias.size()) { this.indiceProximaProvinciaParaAgregar = 0; } } /** - * Para eliminar todas las provincias seleccionadas, deber�amos comenzar desde la �ltima e ir haciendo el barrido hasta la primera. + * Para eliminar todas las provincias seleccionadas, deberíamos comenzar desde la última e ir haciendo el barrido hasta la primera. */ private void eliminarProvinciasSeleccionadas () { for (int i = this.jlistProvincias.getSelectedIndices().length - 1; i >= 0; i--) { diff --git a/src/tutorialJava/capitulo9_AWT_SWING/v05_JListConDefaultListModel/controller/ConnectionManager.java b/src/tutorialJava/capitulo9_AWT_SWING/v05_JListConDefaultListModel/controller/ConnectionManager.java new file mode 100644 index 0000000..d556ee6 --- /dev/null +++ b/src/tutorialJava/capitulo9_AWT_SWING/v05_JListConDefaultListModel/controller/ConnectionManager.java @@ -0,0 +1,22 @@ +package tutorialJava.capitulo9_AWT_SWING.v05_JListConDefaultListModel.controller; + +import java.sql.Connection; +import java.sql.DriverManager; + +public class ConnectionManager { + + private static Connection conn = null; + + + public static Connection getConnection() throws Exception { + if (conn == null) { + Class.forName("com.mysql.cj.jdbc.Driver"); + + conn = + (Connection) DriverManager.getConnection ( + "jdbc:mysql://localhost:3306/poblacionprovincia?serverTimezone=UTC", + "root", "1234"); + } + return conn; + } +} diff --git a/src/tutorialJava/capitulo9_AWT_SWING/v05_JListConDefaultListModel/controller/ControladorPersona.java b/src/tutorialJava/capitulo9_AWT_SWING/v05_JListConDefaultListModel/controller/ControladorPersona.java new file mode 100644 index 0000000..5b86255 --- /dev/null +++ b/src/tutorialJava/capitulo9_AWT_SWING/v05_JListConDefaultListModel/controller/ControladorPersona.java @@ -0,0 +1,49 @@ +package tutorialJava.capitulo9_AWT_SWING.v05_JListConDefaultListModel.controller; + +import java.sql.ResultSet; +import java.util.ArrayList; +import java.util.List; + +import tutorialJava.capitulo9_AWT_SWING.v05_JListConDefaultListModel.model.Persona; +; + + +public class ControladorPersona { + + + public static List findAll() { + List l = new ArrayList(); + + try { + ResultSet rs = ConnectionManager.getConnection().createStatement() + .executeQuery("Select * from persona"); + while (rs.next()) { + Persona p = new Persona(); + p.setId(rs.getInt("id")); + p.setNombre(rs.getString("nombre")); + p.setApellido1(rs.getString("apellido1")); + p.setApellido2(rs.getString("apellido2")); + p.setFechaNacimiento(rs.getDate("fechaNacimiento")); + p.setEdad(rs.getInt("edad")); + p.setActivo(rs.getBoolean("activo")); + p.setIdProvincia(rs.getInt("idProvincia")); + p.setProvincia(ControladorProvincia.findById(p.getIdProvincia())); + l.add(p); + } + } catch (Exception e) { + e.printStackTrace(); + } + return l; + } + +} + + + + + + + + + + diff --git a/src/tutorialJava/capitulo9_AWT_SWING/v05_JListConDefaultListModel/controller/ControladorProvincia.java b/src/tutorialJava/capitulo9_AWT_SWING/v05_JListConDefaultListModel/controller/ControladorProvincia.java new file mode 100644 index 0000000..6e2ae1e --- /dev/null +++ b/src/tutorialJava/capitulo9_AWT_SWING/v05_JListConDefaultListModel/controller/ControladorProvincia.java @@ -0,0 +1,62 @@ +package tutorialJava.capitulo9_AWT_SWING.v05_JListConDefaultListModel.controller; + +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; + +import tutorialJava.capitulo9_AWT_SWING.v05_JListConDefaultListModel.model.Provincia; + + +public class ControladorProvincia { + + + public static List findAll() { + List l = new ArrayList(); + + try { + ResultSet rs = ConnectionManager.getConnection().createStatement() + .executeQuery("Select * from provincia"); + while (rs.next()) { + Provincia p = new Provincia(); + p.setId(rs.getInt("id")); + p.setDescripcion(rs.getString("descripcion")); + l.add(p); + } + } catch (Exception e) { + e.printStackTrace(); + } + return l; + } + + + + public static Provincia findById(int id) { + Provincia p = null; + + try { + ResultSet rs = ConnectionManager.getConnection().createStatement() + .executeQuery("Select * from provincia where id = " + id); + if (rs.next()) { + p = new Provincia(); + p.setId(rs.getInt("id")); + p.setDescripcion(rs.getString("descripcion")); + } + } catch (Exception e) { + e.printStackTrace(); + } + return p; + } + + +} + + + + + + + + + + diff --git a/src/tutorialJava/capitulo9_AWT_SWING/v05_JListConDefaultListModel/model/Persona.java b/src/tutorialJava/capitulo9_AWT_SWING/v05_JListConDefaultListModel/model/Persona.java new file mode 100644 index 0000000..fe0d2b3 --- /dev/null +++ b/src/tutorialJava/capitulo9_AWT_SWING/v05_JListConDefaultListModel/model/Persona.java @@ -0,0 +1,113 @@ +package tutorialJava.capitulo9_AWT_SWING.v05_JListConDefaultListModel.model; + +import java.util.Date; + +public class Persona { + private int id; + private String nombre; + private String apellido1; + private String apellido2; + private Date fechaNacimiento; + private int edad; + private boolean activo; + private int idProvincia; + private Provincia provincia; + + public Persona() { + super(); + } + + public Persona(int id, String nombre, String apellido1, String apellido2, Date fechaNacimiento, int edad, + boolean activo, int idProvincia) { + super(); + this.id = id; + this.nombre = nombre; + this.apellido1 = apellido1; + this.apellido2 = apellido2; + this.fechaNacimiento = fechaNacimiento; + this.edad = edad; + this.activo = activo; + this.idProvincia = idProvincia; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getNombre() { + return nombre; + } + + public void setNombre(String nombre) { + this.nombre = nombre; + } + + public String getApellido1() { + return apellido1; + } + + public void setApellido1(String apellido1) { + this.apellido1 = apellido1; + } + + public String getApellido2() { + return apellido2; + } + + public void setApellido2(String apellido2) { + this.apellido2 = apellido2; + } + + public Date getFechaNacimiento() { + return fechaNacimiento; + } + + public void setFechaNacimiento(Date fechaNacimiento) { + this.fechaNacimiento = fechaNacimiento; + } + + public int getEdad() { + return edad; + } + + public void setEdad(int edad) { + this.edad = edad; + } + + public boolean isActivo() { + return activo; + } + + public void setActivo(boolean activo) { + this.activo = activo; + } + + public int getIdProvincia() { + return idProvincia; + } + + public void setIdProvincia(int idProvincia) { + this.idProvincia = idProvincia; + } + + public Provincia getProvincia() { + return provincia; + } + + public void setProvincia(Provincia provincia) { + this.provincia = provincia; + } + + @Override + public String toString() { + return "Persona [id=" + id + ", nombre=" + nombre + ", apellido1=" + apellido1 + ", apellido2=" + apellido2 + + ", fechaNacimiento=" + fechaNacimiento + ", edad=" + edad + ", activo=" + activo + ", idProvincia=" + + idProvincia + ", provincia=" + provincia + "]"; + } + + +} diff --git a/src/tutorialJava/capitulo9_AWT_SWING/v05_JListConDefaultListModel/model/Provincia.java b/src/tutorialJava/capitulo9_AWT_SWING/v05_JListConDefaultListModel/model/Provincia.java new file mode 100644 index 0000000..33ff888 --- /dev/null +++ b/src/tutorialJava/capitulo9_AWT_SWING/v05_JListConDefaultListModel/model/Provincia.java @@ -0,0 +1,38 @@ +package tutorialJava.capitulo9_AWT_SWING.v05_JListConDefaultListModel.model; + +public class Provincia { + private int id; + private String descripcion; + + public Provincia() { + } + + public Provincia(int id, String descripcion) { + super(); + this.id = id; + this.descripcion = descripcion; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getDescripcion() { + return descripcion; + } + + public void setDescripcion(String descripcion) { + this.descripcion = descripcion; + } + + @Override + public String toString() { + return descripcion; + } + + +} diff --git a/src/tutorialJava/capitulo9_AWT_SWING/v06_EjemplosJTable/DatosDeTabla.java b/src/tutorialJava/capitulo9_AWT_SWING/v06_EjemplosJTable/DatosDeTabla.java index bfdad01..5187432 100644 --- a/src/tutorialJava/capitulo9_AWT_SWING/v06_EjemplosJTable/DatosDeTabla.java +++ b/src/tutorialJava/capitulo9_AWT_SWING/v06_EjemplosJTable/DatosDeTabla.java @@ -2,8 +2,9 @@ package tutorialJava.capitulo9_AWT_SWING.v06_EjemplosJTable; import java.util.List; -import tutorialJava.modelosBasesDeDatosComunesJPA.poblacionPorProvincias.Persona; -import tutorialJava.modelosBasesDeDatosComunesJPA.poblacionPorProvincias.controladores.PersonaControlador; +import tutorialJava.capitulo9_AWT_SWING.v05_JListConDefaultListModel.controller.ControladorPersona; +import tutorialJava.capitulo9_AWT_SWING.v05_JListConDefaultListModel.model.Persona; + public class DatosDeTabla { @@ -12,7 +13,7 @@ public class DatosDeTabla { * @return */ public static String[] getTitulosColumnas() { - return new String[] {"Id", "Nombre", "1� apellido", "2� apellido", "Fecha Nac.", "Edad", "Activo", "Provincia"}; + return new String[] {"Id", "Nombre", "1º apellido", "2º apellido", "Fecha Nac.", "Edad", "Activo", "Provincia"}; } /** @@ -21,7 +22,7 @@ public class DatosDeTabla { */ public static Object[][] getDatosDeTabla() { // Obtengo todas las personas - List personas = PersonaControlador.getControlador().findAllPersonas(); + List personas = ControladorPersona.findAll(); // Preparo una estructura para pasar al constructor de la JTable Object[][] datos = new Object[personas.size()][8]; // Cargo los datos de la lista de personas en la matriz de los datos @@ -29,11 +30,11 @@ public class DatosDeTabla { Persona persona = personas.get(i); datos[i][0] = persona.getId(); datos[i][1] = persona.getNombre(); - datos[i][2] = persona.getPrimerApellido(); - datos[i][3] = persona.getSegundoApellido(); + datos[i][2] = persona.getApellido1(); + datos[i][3] = persona.getApellido2(); datos[i][4] = persona.getFechaNacimiento(); datos[i][5] = persona.getEdad(); - datos[i][6] = persona.getActivo(); + datos[i][6] = persona.isActivo(); datos[i][7] = persona.getProvincia(); } diff --git a/src/tutorialJava/capitulo9_AWT_SWING/v06_EjemplosJTable/v04_TablaConAbstractTableModelYCellRenderer/MiProvinciaTableCellEditor.java b/src/tutorialJava/capitulo9_AWT_SWING/v06_EjemplosJTable/v04_TablaConAbstractTableModelYCellRenderer/MiProvinciaTableCellEditor.java index a9a2225..03f1f34 100644 --- a/src/tutorialJava/capitulo9_AWT_SWING/v06_EjemplosJTable/v04_TablaConAbstractTableModelYCellRenderer/MiProvinciaTableCellEditor.java +++ b/src/tutorialJava/capitulo9_AWT_SWING/v06_EjemplosJTable/v04_TablaConAbstractTableModelYCellRenderer/MiProvinciaTableCellEditor.java @@ -7,8 +7,9 @@ import javax.swing.DefaultCellEditor; import javax.swing.JComboBox; import javax.swing.JTable; -import tutorialJava.modelosBasesDeDatosComunesJPA.poblacionPorProvincias.Provincia; -import tutorialJava.modelosBasesDeDatosComunesJPA.poblacionPorProvincias.controladores.ProvinciaControlador; +import tutorialJava.capitulo9_AWT_SWING.v05_JListConDefaultListModel.controller.ControladorProvincia; +import tutorialJava.capitulo9_AWT_SWING.v05_JListConDefaultListModel.model.Provincia; + public class MiProvinciaTableCellEditor extends DefaultCellEditor { @@ -37,7 +38,7 @@ public class MiProvinciaTableCellEditor extends DefaultCellEditor { jcbProvincias.removeAllItems(); // Inicializo los elementos del combobox a todas las provincias disponibles y selecciono la correcta - List provincias = ProvinciaControlador.getControlador().findAllProvincias(); + List provincias = ControladorProvincia.findAll(); for (Provincia provincia : provincias) { jcbProvincias.addItem(provincia); if (value != null && value instanceof Provincia) { diff --git a/src/tutorialJava/capitulo9_AWT_SWING/v06_EjemplosJTable/v04_TablaConAbstractTableModelYCellRenderer/TablaEnScrollPane.java b/src/tutorialJava/capitulo9_AWT_SWING/v06_EjemplosJTable/v04_TablaConAbstractTableModelYCellRenderer/TablaEnScrollPane.java index 96b29aa..faad9de 100644 --- a/src/tutorialJava/capitulo9_AWT_SWING/v06_EjemplosJTable/v04_TablaConAbstractTableModelYCellRenderer/TablaEnScrollPane.java +++ b/src/tutorialJava/capitulo9_AWT_SWING/v06_EjemplosJTable/v04_TablaConAbstractTableModelYCellRenderer/TablaEnScrollPane.java @@ -11,7 +11,8 @@ import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JTextArea; -import tutorialJava.modelosBasesDeDatosComunesJPA.poblacionPorProvincias.Provincia; +import tutorialJava.capitulo9_AWT_SWING.v05_JListConDefaultListModel.model.Provincia; + public class TablaEnScrollPane extends JPanel { diff --git a/src/tutorialJava/examenes/examen20250404/GestionBiblioteca.java b/src/tutorialJava/examenes/examen20250404/GestionBiblioteca.java new file mode 100644 index 0000000..fb89cea --- /dev/null +++ b/src/tutorialJava/examenes/examen20250404/GestionBiblioteca.java @@ -0,0 +1,246 @@ +package tutorialJava.examenes.examen20250404; + +import java.awt.EventQueue; + +import javax.swing.JFrame; +import javax.swing.JPanel; +import javax.swing.border.EmptyBorder; +import java.awt.GridBagLayout; +import javax.swing.JLabel; +import java.awt.GridBagConstraints; +import java.awt.Font; +import java.awt.Insets; +import javax.swing.JComboBox; +import javax.swing.JTextField; +import javax.swing.JButton; +import javax.swing.JCheckBox; +import javax.swing.DefaultComboBoxModel; + +public class GestionBiblioteca extends JFrame { + + private static final long serialVersionUID = 1L; + private JPanel contentPane; + private JTextField jtfFiltroTituloLibro; + private JTextField jtfFiltroAutorLibro; + private JTextField textField; + private JTextField textField_1; + private JTextField textField_2; + + /** + * Launch the application. + */ + public static void main(String[] args) { + EventQueue.invokeLater(new Runnable() { + public void run() { + try { + GestionBiblioteca frame = new GestionBiblioteca(); + frame.setVisible(true); + } catch (Exception e) { + e.printStackTrace(); + } + } + }); + } + + /** + * Create the frame. + */ + public GestionBiblioteca() { + setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + setBounds(100, 100, 450, 300); + contentPane = new JPanel(); + contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); + + setContentPane(contentPane); + GridBagLayout gbl_contentPane = new GridBagLayout(); + gbl_contentPane.columnWidths = new int[]{0, 0, 0}; + gbl_contentPane.rowHeights = new int[]{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + gbl_contentPane.columnWeights = new double[]{0.0, 1.0, Double.MIN_VALUE}; + gbl_contentPane.rowWeights = new double[]{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, Double.MIN_VALUE}; + contentPane.setLayout(gbl_contentPane); + + JLabel lblNewLabel = new JLabel("Gestión de préstamos de biblioteca"); + lblNewLabel.setFont(new Font("Tahoma", Font.BOLD, 14)); + GridBagConstraints gbc_lblNewLabel = new GridBagConstraints(); + gbc_lblNewLabel.gridwidth = 2; + gbc_lblNewLabel.insets = new Insets(10, 0, 10, 0); + gbc_lblNewLabel.gridx = 0; + gbc_lblNewLabel.gridy = 0; + contentPane.add(lblNewLabel, gbc_lblNewLabel); + + JLabel lblNewLabel_1 = new JLabel("Categoría literaria:"); + GridBagConstraints gbc_lblNewLabel_1 = new GridBagConstraints(); + gbc_lblNewLabel_1.insets = new Insets(0, 0, 5, 5); + gbc_lblNewLabel_1.anchor = GridBagConstraints.EAST; + gbc_lblNewLabel_1.gridx = 0; + gbc_lblNewLabel_1.gridy = 1; + contentPane.add(lblNewLabel_1, gbc_lblNewLabel_1); + + JComboBox jcbCategoria = new JComboBox(); + jcbCategoria.setModel(new DefaultComboBoxModel(new String[] {"Novela"})); + GridBagConstraints gbc_jcbCategoria = new GridBagConstraints(); + gbc_jcbCategoria.insets = new Insets(0, 0, 5, 0); + gbc_jcbCategoria.fill = GridBagConstraints.HORIZONTAL; + gbc_jcbCategoria.gridx = 1; + gbc_jcbCategoria.gridy = 1; + contentPane.add(jcbCategoria, gbc_jcbCategoria); + + JLabel lblNewLabel_2 = new JLabel("Filtro de título de libro:"); + GridBagConstraints gbc_lblNewLabel_2 = new GridBagConstraints(); + gbc_lblNewLabel_2.anchor = GridBagConstraints.EAST; + gbc_lblNewLabel_2.insets = new Insets(0, 0, 5, 5); + gbc_lblNewLabel_2.gridx = 0; + gbc_lblNewLabel_2.gridy = 2; + contentPane.add(lblNewLabel_2, gbc_lblNewLabel_2); + + jtfFiltroTituloLibro = new JTextField(); + jtfFiltroTituloLibro.setText("Cien"); + GridBagConstraints gbc_jtfFiltroTituloLibro = new GridBagConstraints(); + gbc_jtfFiltroTituloLibro.insets = new Insets(0, 0, 5, 0); + gbc_jtfFiltroTituloLibro.fill = GridBagConstraints.HORIZONTAL; + gbc_jtfFiltroTituloLibro.gridx = 1; + gbc_jtfFiltroTituloLibro.gridy = 2; + contentPane.add(jtfFiltroTituloLibro, gbc_jtfFiltroTituloLibro); + jtfFiltroTituloLibro.setColumns(10); + + JLabel lblNewLabel_3 = new JLabel("Filtro de autor de libro:"); + GridBagConstraints gbc_lblNewLabel_3 = new GridBagConstraints(); + gbc_lblNewLabel_3.anchor = GridBagConstraints.EAST; + gbc_lblNewLabel_3.insets = new Insets(0, 0, 5, 5); + gbc_lblNewLabel_3.gridx = 0; + gbc_lblNewLabel_3.gridy = 3; + contentPane.add(lblNewLabel_3, gbc_lblNewLabel_3); + + jtfFiltroAutorLibro = new JTextField(); + jtfFiltroAutorLibro.setText("García"); + GridBagConstraints gbc_jtfFiltroAutorLibro = new GridBagConstraints(); + gbc_jtfFiltroAutorLibro.insets = new Insets(0, 0, 5, 0); + gbc_jtfFiltroAutorLibro.fill = GridBagConstraints.HORIZONTAL; + gbc_jtfFiltroAutorLibro.gridx = 1; + gbc_jtfFiltroAutorLibro.gridy = 3; + contentPane.add(jtfFiltroAutorLibro, gbc_jtfFiltroAutorLibro); + jtfFiltroAutorLibro.setColumns(10); + + JButton btnFiltrarLibros = new JButton("Filtrar libros"); + GridBagConstraints gbc_btnFiltrarLibros = new GridBagConstraints(); + gbc_btnFiltrarLibros.insets = new Insets(0, 0, 5, 0); + gbc_btnFiltrarLibros.gridx = 1; + gbc_btnFiltrarLibros.gridy = 4; + contentPane.add(btnFiltrarLibros, gbc_btnFiltrarLibros); + + JLabel lblNewLabel_4 = new JLabel("Libros filtrados:"); + GridBagConstraints gbc_lblNewLabel_4 = new GridBagConstraints(); + gbc_lblNewLabel_4.anchor = GridBagConstraints.EAST; + gbc_lblNewLabel_4.insets = new Insets(0, 0, 5, 5); + gbc_lblNewLabel_4.gridx = 0; + gbc_lblNewLabel_4.gridy = 5; + contentPane.add(lblNewLabel_4, gbc_lblNewLabel_4); + + JComboBox jcbLibrosFiltrados = new JComboBox(); + jcbLibrosFiltrados.setModel(new DefaultComboBoxModel(new String[] {"Cien años de soledad - Gabriel García Márquez"})); + GridBagConstraints gbc_jcbLibrosFiltrados = new GridBagConstraints(); + gbc_jcbLibrosFiltrados.insets = new Insets(0, 0, 5, 0); + gbc_jcbLibrosFiltrados.fill = GridBagConstraints.HORIZONTAL; + gbc_jcbLibrosFiltrados.gridx = 1; + gbc_jcbLibrosFiltrados.gridy = 5; + contentPane.add(jcbLibrosFiltrados, gbc_jcbLibrosFiltrados); + + JLabel lblNewLabel_5 = new JLabel("Datos del préstamo del libro"); + lblNewLabel_5.setFont(new Font("Tahoma", Font.BOLD, 14)); + GridBagConstraints gbc_lblNewLabel_5 = new GridBagConstraints(); + gbc_lblNewLabel_5.gridwidth = 2; + gbc_lblNewLabel_5.insets = new Insets(10, 0, 10, 0); + gbc_lblNewLabel_5.gridx = 0; + gbc_lblNewLabel_5.gridy = 6; + contentPane.add(lblNewLabel_5, gbc_lblNewLabel_5); + + JLabel lblNewLabel_6 = new JLabel("Id préstamo:"); + GridBagConstraints gbc_lblNewLabel_6 = new GridBagConstraints(); + gbc_lblNewLabel_6.anchor = GridBagConstraints.EAST; + gbc_lblNewLabel_6.insets = new Insets(0, 0, 5, 5); + gbc_lblNewLabel_6.gridx = 0; + gbc_lblNewLabel_6.gridy = 7; + contentPane.add(lblNewLabel_6, gbc_lblNewLabel_6); + + textField = new JTextField(); + textField.setEnabled(false); + textField.setText("1"); + GridBagConstraints gbc_textField = new GridBagConstraints(); + gbc_textField.insets = new Insets(0, 0, 5, 0); + gbc_textField.fill = GridBagConstraints.HORIZONTAL; + gbc_textField.gridx = 1; + gbc_textField.gridy = 7; + contentPane.add(textField, gbc_textField); + textField.setColumns(10); + + JLabel lblNewLabel_7 = new JLabel("Usuario:"); + GridBagConstraints gbc_lblNewLabel_7 = new GridBagConstraints(); + gbc_lblNewLabel_7.anchor = GridBagConstraints.EAST; + gbc_lblNewLabel_7.insets = new Insets(0, 0, 5, 5); + gbc_lblNewLabel_7.gridx = 0; + gbc_lblNewLabel_7.gridy = 8; + contentPane.add(lblNewLabel_7, gbc_lblNewLabel_7); + + JComboBox jcbUsuario = new JComboBox(); + jcbUsuario.setModel(new DefaultComboBoxModel(new String[] {"Ana López - 12345678A"})); + GridBagConstraints gbc_jcbUsuario = new GridBagConstraints(); + gbc_jcbUsuario.insets = new Insets(0, 0, 5, 0); + gbc_jcbUsuario.fill = GridBagConstraints.HORIZONTAL; + gbc_jcbUsuario.gridx = 1; + gbc_jcbUsuario.gridy = 8; + contentPane.add(jcbUsuario, gbc_jcbUsuario); + + JLabel lblNewLabel_8 = new JLabel("Fecha del préstamo:"); + GridBagConstraints gbc_lblNewLabel_8 = new GridBagConstraints(); + gbc_lblNewLabel_8.anchor = GridBagConstraints.EAST; + gbc_lblNewLabel_8.insets = new Insets(0, 0, 5, 5); + gbc_lblNewLabel_8.gridx = 0; + gbc_lblNewLabel_8.gridy = 9; + contentPane.add(lblNewLabel_8, gbc_lblNewLabel_8); + + textField_1 = new JTextField(); + textField_1.setText("2025-03-01"); + GridBagConstraints gbc_textField_1 = new GridBagConstraints(); + gbc_textField_1.insets = new Insets(0, 0, 5, 0); + gbc_textField_1.fill = GridBagConstraints.HORIZONTAL; + gbc_textField_1.gridx = 1; + gbc_textField_1.gridy = 9; + contentPane.add(textField_1, gbc_textField_1); + textField_1.setColumns(10); + + JLabel lblNewLabel_9 = new JLabel("Fecha de devolución:"); + GridBagConstraints gbc_lblNewLabel_9 = new GridBagConstraints(); + gbc_lblNewLabel_9.anchor = GridBagConstraints.EAST; + gbc_lblNewLabel_9.insets = new Insets(0, 0, 5, 5); + gbc_lblNewLabel_9.gridx = 0; + gbc_lblNewLabel_9.gridy = 10; + contentPane.add(lblNewLabel_9, gbc_lblNewLabel_9); + + textField_2 = new JTextField(); + textField_2.setText("2025-03-15"); + GridBagConstraints gbc_textField_2 = new GridBagConstraints(); + gbc_textField_2.insets = new Insets(0, 0, 5, 0); + gbc_textField_2.fill = GridBagConstraints.HORIZONTAL; + gbc_textField_2.gridx = 1; + gbc_textField_2.gridy = 10; + contentPane.add(textField_2, gbc_textField_2); + textField_2.setColumns(10); + + JCheckBox chckbxNewCheckBox = new JCheckBox("Préstamo activo"); + GridBagConstraints gbc_chckbxNewCheckBox = new GridBagConstraints(); + gbc_chckbxNewCheckBox.insets = new Insets(0, 0, 5, 0); + gbc_chckbxNewCheckBox.anchor = GridBagConstraints.WEST; + gbc_chckbxNewCheckBox.gridx = 1; + gbc_chckbxNewCheckBox.gridy = 11; + contentPane.add(chckbxNewCheckBox, gbc_chckbxNewCheckBox); + + JButton btnGuardar = new JButton("Guardar cambios del préstamo"); + GridBagConstraints gbc_btnGuardar = new GridBagConstraints(); + gbc_btnGuardar.gridwidth = 2; + gbc_btnGuardar.insets = new Insets(0, 0, 0, 5); + gbc_btnGuardar.gridx = 0; + gbc_btnGuardar.gridy = 12; + contentPane.add(btnGuardar, gbc_btnGuardar); + } + +}