Java Swing + MySQL - MySQL database maintenance program (Interface class only)

package Admin; import java.awt.BorderLayout; import java.awt.Component; import java.awt.Container; import java.awt.Dimension; import java.awt.Insets; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.io.FileNotFoundException; import java.io.FileReader; import java.util.ArrayList; import java.util.List; import javax.swing.BorderFactory; import javax.swing.Box; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JProgressBar; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JTextArea; import javax.swing.SortOrder; import javax.swing.SwingConstants; import javax.swing.table.DefaultTableModel; import javax.swing.table.TableModel; import javax.swing.table.TableRowSorter; /** * Clase principal. * * @author Urko * */ public class Principal implements ActionListener, ItemListener{ SQL baseDatos; Datos nuevosDatos; JFrame ventana; JPanel panelPrincipal, panelN, panelC, panelS, panelPB, panelCB; JMenuBar menu; JMenu mArch, mEdit, mSalir; JMenuItem guardarI, descartarI, recargarI, reconectI, anadirI, borrarI, opcionesI, salirI; JTable tabla; JButton guardar, descartar, recargar; JComboBox<String> cTablas; JProgressBar progressBar; JTextArea tArea; Object [] colNames; String seleccionado; String ultimoID; Task guardarDatos; Task cargarDatos; DefaultTableModel tableModel; String URL; String nombreBD; String user; String pass; int numeroPuerto; FileReader fr; String datosActual [][]; int tamX = 0, tamY = 0; boolean cancel = false; /** * Constructor de la clase Principal e inicia la conexión con la BD. * * @param tamX * @param tamY * @param URL * @param numeroPuerto * @param nombreBD */ public Principal(int tamX, int tamY, String URL, int numeroPuerto, String nombreBD){ this.URL = URL; this.nombreBD = nombreBD; this.numeroPuerto = numeroPuerto; ventana = new JFrame("Gestión de la aplicación"); Identificacion nuevoDialogo = null; FicheroConfig leerFitx = null; boolean conect = false; do { nuevoDialogo = new Identificacion(ventana, "Identificación", true); this.user = nuevoDialogo.user; this.pass = nuevoDialogo.pass; try { if ((fr = new FileReader("config.ini")) != null) { if (nuevoDialogo.respuesta) { leerFitx = new FicheroConfig(); leerFitx.cargarDatos(); baseDatos = new SQL(leerFitx.URL, leerFitx.nPort, leerFitx.nBD, nuevoDialogo.user, nuevoDialogo.pass, ventana); if (baseDatos.conection) { ventana.setSize(leerFitx.tamx, leerFitx.tamy); if ((leerFitx.tamy == 744) && (leerFitx.tamx == 1382)) { ventana.setExtendedState(JFrame.MAXIMIZED_BOTH); } Dimension dim = Toolkit.getDefaultToolkit().getScreenSize(); ventana.setLocation(dim.width/2-ventana.getSize().width/2, dim.height/2-ventana.getSize().height/2); ventana.setJMenuBar(crearMenuBar()); ventana.setContentPane(crearPanelVentana()); ventana.setVisible(true); ventana.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } else { System.exit(0); } } } catch (FileNotFoundException e) { if (nuevoDialogo.respuesta){ baseDatos = new SQL(URL, numeroPuerto, nombreBD, nuevoDialogo.user, nuevoDialogo.pass, ventana); if (baseDatos.conection) { ventana.setSize(tamX, tamY); Dimension dim = Toolkit.getDefaultToolkit().getScreenSize(); ventana.setLocation(dim.width/2-ventana.getSize().width/2, dim.height/2-ventana.getSize().height/2); ventana.setJMenuBar(crearMenuBar()); ventana.setContentPane(crearPanelVentana()); ventana.setVisible(true); ventana.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } else { System.exit(0); } } finally { if (baseDatos == null) { conect = false; } else if (!baseDatos.conection) { conect = false; } else if (baseDatos.conection) { conect = true; } } } while (!conect); } private JMenuBar crearMenuBar(){ menu = new JMenuBar(); menu.add(crearMenuArch()); menu.add(crearMenuEdit()); menu.add(Box.createHorizontalGlue()); menu.add(crearMenuSalir()); return menu; } private JMenu crearMenuArch(){ mArch = new JMenu("Archivo"); guardarI = mArch.add("Guardar cambios"); descartarI = mArch.add("Deshacer cambios"); recargarI = mArch.add("Recargar tabla"); reconectI = mArch.add("Reconectar con Base de Datos"); guardarI.addActionListener(this); descartarI.addActionListener(this); recargarI.addActionListener(this); reconectI.addActionListener(this); guardarI.setActionCommand("mGuardar"); descartarI.setActionCommand("mDescartar"); recargarI.setActionCommand("mRecargar"); reconectI.setActionCommand("mReconectar"); return mArch; } private JMenu crearMenuEdit(){ mEdit = new JMenu("Editar"); anadirI = mEdit.add("Añadir dato"); borrarI = mEdit.add("Borrar dato"); opcionesI = mEdit.add("Opciones"); anadirI.addActionListener(this); opcionesI.addActionListener(this); borrarI.addActionListener(this); anadirI.setActionCommand("mAñadir"); opcionesI.setActionCommand("mOpciones"); borrarI.setActionCommand("mBorrar"); return mEdit; } private JMenu crearMenuSalir(){ mSalir = new JMenu("Salir"); salirI = mSalir.add("Salir"); salirI.addActionListener(this); salirI.setActionCommand("mSalir"); return mSalir; } private Container crearPanelVentana(){ panelPrincipal = new JPanel(new BorderLayout()); panelPrincipal.add(crearPanelNorte(), BorderLayout.NORTH); panelPrincipal.add(crearPanelCentro(), BorderLayout.CENTER); panelPrincipal.add(crearPanelSur(), BorderLayout.SOUTH); return panelPrincipal; } private Container crearPanelNorte(){ panelN = new JPanel(new BorderLayout()); panelN.add(crearCBTablas(),BorderLayout.WEST); panelN.add(crearPanelProgressBar(), BorderLayout.CENTER); return panelN; } private Container crearPanelCentro(){ panelC = new JPanel(new BorderLayout()); panelC.setBorder(BorderFactory.createCompoundBorder(null, BorderFactory.createTitledBorder("Datos de la tabla seleccionada"))); panelC.add(new JScrollPane(crearJTable()), BorderLayout.CENTER); return panelC; } private Container crearPanelSur(){ panelS = new JPanel(new BorderLayout()); panelS.setBorder(BorderFactory.createCompoundBorder(null, BorderFactory.createTitledBorder("Información"))); panelS.add(crearTextArea(), BorderLayout.CENTER); return panelS; } private Container crearPanelProgressBar(){ panelPB = new JPanel(new BorderLayout()); panelPB.setBorder(BorderFactory.createCompoundBorder(null, BorderFactory.createTitledBorder("Progreso"))); progressBar = new JProgressBar(SwingConstants.HORIZONTAL,0, 100); progressBar.setValue(0); progressBar.setStringPainted(true); panelPB.add(progressBar, BorderLayout.CENTER); return panelPB; } private Container crearCBTablas(){ try { panelCB = new JPanel(new BorderLayout()); panelCB.setBorder(BorderFactory.createCompoundBorder(null, BorderFactory.createTitledBorder("Tablas"))); Tablas nuevasTablas = baseDatos.cargarTablas(ventana); cTablas = new JComboBox<String>(nuevasTablas.lista.toArray(new String[nuevasTablas.lista.size()])); if (seleccionado != null) { cTablas.setSelectedItem(seleccionado); } cTablas.addItemListener(this); panelCB.add(cTablas, BorderLayout.CENTER); return panelCB; } catch (Exception e) { repintarPanel(); } return panelCB; } private Container crearTextArea(){ tArea = new JTextArea(5, 20); tArea.setMargin(new Insets(5, 5, 5, 5)); tArea.setEditable(false); JScrollPane panelScroll = new JScrollPane(tArea); return panelScroll; } /** * Crea y visualiza el JTable. * * @return */ @SuppressWarnings("serial") private Component crearJTable(){ tabla = new JTable(); if (seleccionado != null) { nuevosDatos = baseDatos.verDatos(seleccionado, ventana); if (nuevosDatos.datos.size() != 0) { String datosMatrix [][] = new String [(nuevosDatos.datos.size() / nuevosDatos.nombreColumnas.size())][nuevosDatos.nombreColumnas.size()]; datosActual = new String [(nuevosDatos.datos.size() / nuevosDatos.nombreColumnas.size())][nuevosDatos.nombreColumnas.size()]; int num = 0; for (int i = 0; i != (nuevosDatos.datos.size() / nuevosDatos.nombreColumnas.size()); i++){ for (int j = 0; j != nuevosDatos.nombreColumnas.size(); j++){ if (((i + 1) == (nuevosDatos.datos.size() / nuevosDatos.nombreColumnas.size()) && (j == 0))){ ultimoID = nuevosDatos.datos.get(num); } datosMatrix[i][j] = nuevosDatos.datos.get(num++); } } datosActual = datosMatrix; colNames = nuevosDatos.nombreColumnas.toArray(new String[nuevosDatos.nombreColumnas.size()]); tabla = new JTable(); tableModel = new DefaultTableModel(datosMatrix, colNames) { @Override public boolean isCellEditable(int row, int column) { if (column == 0) return false; else return true; } }; tabla.setModel(tableModel); TableRowSorter<TableModel> sorter = new TableRowSorter<TableModel>(tabla.getModel()) { @Override public void toggleSortOrder(int column) { if (column >= 0 && column < getModelWrapper().getColumnCount() && isSortable(column)) { List<SortKey> keys = new ArrayList<SortKey>(getSortKeys()); if (!keys.isEmpty()) { SortKey sortKey = keys.get(0); if (sortKey.getColumn() == column && sortKey.getSortOrder() == SortOrder.DESCENDING) { setSortKeys(null); return; } } } super.toggleSortOrder(column); } }; tabla.setRowSorter(sorter); tamX = (nuevosDatos.datos.size() / nuevosDatos.nombreColumnas.size()); tamY = nuevosDatos.nombreColumnas.size(); } else { JOptionPane.showMessageDialog(ventana, "La tabla está vacía", "Advertencia", JOptionPane.WARNING_MESSAGE); } } return tabla; } private void repintarPanel() { seleccionado = (String) cTablas.getSelectedItem(); panelPrincipal.removeAll(); panelPrincipal.add(crearPanelNorte(), BorderLayout.NORTH); panelPrincipal.add(crearPanelCentro(), BorderLayout.CENTER); panelPrincipal.add(crearPanelSur(), BorderLayout.SOUTH); panelPrincipal.revalidate(); } @SuppressWarnings("unused") public static void main (String args[]){ Principal ini = new Principal(700, 700, "olaldiko.mooo.com", 23306, "mordorbet"); } @Override public void actionPerformed(ActionEvent e) { if ((e.getActionCommand().equals("mDescartar")) || (e.getActionCommand().equals("mRecargar"))) { repintarPanel(); } if (e.getActionCommand().equals("mGuardar")) { if (tabla != null){ guardarDatos = new Task(ventana, baseDatos, progressBar, tArea, guardarDatos, tamX, tamY, tabla, datosActual, seleccionado, nuevosDatos); guardarDatos.execute(); } else { JOptionPane.showMessageDialog(ventana, "No has cargado ninguna tabla", "Advertencia", JOptionPane.WARNING_MESSAGE); } } if (e.getActionCommand().equals("mReconectar")) { baseDatos.reintentarConexion(); } if (e.getActionCommand().equals("mAñadir")) { NuevoDato anadirNuevoDato = new NuevoDato(ventana, "Añadir nuevo dato", true, tamX, tamY, colNames, seleccionado, ultimoID); if (anadirNuevoDato.respuesta) { baseDatos.insertarDato(anadirNuevoDato.nuevosDatos, colNames, seleccionado, tamY, ventana); repintarPanel(); } } if (e.getActionCommand().equals("mBorrar")) { BorrarDato borrarDato = new BorrarDato(ventana, "Borrar dato", true, seleccionado); if (borrarDato.respuesta) { baseDatos.borrarDato(seleccionado, borrarDato.field.getText(), ventana); repintarPanel(); } } if (e.getActionCommand().equals("mOpciones")) { EditarConfig editarConfiguracion = new EditarConfig(ventana, "Editar la configuración", true, URL, numeroPuerto, nombreBD, user, pass); FicheroConfig guardarFitx = new FicheroConfig(); ventana.getContentPane().getSize(); if (editarConfiguracion.respuesta) { guardarFitx.guardarDatos(ventana.getWidth(), ventana.getHeight(), editarConfiguracion.url, editarConfiguracion.puerto, editarConfiguracion.nombreBD); baseDatos.actualizarUsuario(editarConfiguracion.pass, ventana); } } if (e.getActionCommand().equals("mSalir")) { ventana.dispose(); } } @Override public void itemStateChanged(ItemEvent e) { repintarPanel(); } }

Be the first to comment

You can use [html][/html], [css][/css], [php][/php] and more to embed the code. Urls are automatically hyperlinked. Line breaks and paragraphs are automatically generated.