import java.awt.BorderLayout; import java.awt.EventQueue; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; import javax.swing.DefaultListModel; import javax.swing.JList; import javax.swing.JOptionPane; import javax.swing.JTextField; import javax.swing.JLabel; import javax.swing.JButton; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import javax.swing.event.ListSelectionListener; import javax.swing.event.ListSelectionEvent; public class claseBD extends JFrame { private JPanel contentPane; private JTextField txtcoddepto; private JTextField txtnombredepto; private JList lstDepartamentos; private Connection con; private Statement stmt; private DefaultListModel modeloLista=new DefaultListModel(); String driver = "org.postgresql.Driver"; String connectString = "jdbc:postgresql://localhost:5432/baseClientes"; String user = "postgres"; String password = "postgres"; //Método conectar **************** private void conectar() throws ClassNotFoundException { try { Class.forName(driver); con = DriverManager.getConnection(connectString, user , password); stmt = con.createStatement(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } //Método cargarLista private void cargarLista() throws ClassNotFoundException { /*HAGO LA CONSULTA DE TODOS LOS DEPARTAMENTOS Y LOS MUESTRO EN LA LISTA*/ try { conectar(); ResultSet rs = stmt.executeQuery("SELECT * FROM departamentos order by nombredepto"); /*RECORRO EL RESULTSET AGREGANDO LOS DATOS QUE QUIERO MOSTRAR EN EL JLIST*/ while(rs.next()) { modeloLista.addElement(rs.getString("nombredepto"));//nombredepto es el campo de la tabla que quiero mostrar } rs.close(); con.close(); } catch (SQLException e) { e.printStackTrace(); } } //Método agregarDepartamento private void agregarDepartamento(String nombredepto) throws SQLException, ClassNotFoundException { try { conectar(); stmt.execute("Insert into Departamentos (coddepto, nombredepto) values(DEFAULT,'" + nombredepto + "')"); } catch(SQLException e) { e.printStackTrace(); } } //Método eliminarDepartamento private void eliminarDepartamento(String nombredepto) throws SQLException, ClassNotFoundException { try { conectar(); stmt.execute("Delete from departamentos where nombreDepto='" + nombredepto + "'"); } catch(SQLException e) { e.printStackTrace(); } } /** * Launch the application. */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { claseBD frame = new claseBD(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the frame. * @throws ClassNotFoundException */ public claseBD() throws ClassNotFoundException { setBounds(100, 100, 450, 300); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); setContentPane(contentPane); contentPane.setLayout(null); lstDepartamentos = new JList(modeloLista); lstDepartamentos.setBounds(32, 36, 136, 167); contentPane.add(lstDepartamentos); txtcoddepto = new JTextField(); txtcoddepto.setEditable(false); txtcoddepto.setBounds(237, 24, 86, 20); contentPane.add(txtcoddepto); txtcoddepto.setColumns(10); JLabel lblNombreHotel = new JLabel("C\u00F3digo"); lblNombreHotel.setBounds(238, 11, 74, 14); contentPane.add(lblNombreHotel); JLabel lblDireccinHotel = new JLabel("Nombre Departamento"); lblDireccinHotel.setBounds(236, 55, 126, 14); contentPane.add(lblDireccinHotel); txtnombredepto = new JTextField(); txtnombredepto.setBounds(237, 76, 107, 20); contentPane.add(txtnombredepto); txtnombredepto.setColumns(10); JLabel lblDepartamentos = new JLabel("Departamentos"); lblDepartamentos.setBounds(32, 11, 99, 14); contentPane.add(lblDepartamentos); JButton btnAgregar = new JButton("Agregar"); btnAgregar.setBounds(238, 123, 89, 23); contentPane.add(btnAgregar); JButton btnQuitar = new JButton("Quitar"); btnQuitar.setBounds(237, 165, 89, 23); contentPane.add(btnQuitar); //****************** COMIENZO DE LA PROGRAMACIÓN***************** //************* Carga la lista de departamentos cargarLista(); //************* Botón AGREGAR un nuevo departamento a la tabla btnAgregar.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent arg0) { try{ //Primero controlo que la caja de texto no esté vacía if(txtnombredepto.getText().length()==0) { JOptionPane.showMessageDialog(null,"Complete los datos obligatorios"); } else { //Si la caja de texto no está vacía, llamo al metodo agregarDepartamento agregarDepartamento(txtnombredepto.getText()); //limpio la lista modeloLista.clear(); //vuelvo a cargar la lista cargarLista(); } } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } } }); //BOTÓN PARA ELIMINAR EL DEPARTAMENTO SELECCIONADO btnQuitar.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent arg0) { //Primero me fijo si hay algún departamento seleccionado if(lstDepartamentos.getSelectedIndex()==-1) JOptionPane.showMessageDialog(null, "Seleccione el departamento a eliminar"); else try { //Si hay un departamento seleccionado, llamo al método correspondiente eliminarDepartamento(modeloLista.elementAt(lstDepartamentos.getSelectedIndex()). toString()); modeloLista.clear(); cargarLista(); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } } }); }//cierra implementación }//cierra clase