|
Mostrar Temas
|
Páginas: [1]
|
1
|
Programación / Java / Actualizar JTable en tiempo de ejecucion con datos de una Base de datos
|
en: 1 Noviembre 2019, 22:53 pm
|
Buenas tengo un problema, tengo una base de datos llamada "proyecto" con una tabla unica que es "Insumo", en ella tengo 10 columnas con diferentes datos. Y tengo que realizar un programa que pueda añadir datos, meterlos a la una tabla (JTable) y un par de cosas mas que no vienen al caso. El tema es que puedo cargar la tabla con los datos ingresados en la base de datos una vez arranca el programa, pero cuando ya esta en ejecucion no puedo, intente poniendo un boton que realizara dicha accion pero no me salio, tambien intente que los datos ingresados en una de las ventanas (JDialog) se enviaran a la tabla (Que esta en un JDialog distinto al anterior) Les dejo el codigo tanto de la clase Conexion, como de los 2 JDialog package Logica; import java.sql.DriverManager; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.Statement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.table.DefaultTableModel; public class Conexion { public static Conexion instancia; private Conexion(){ String URL="jdbc:mysql://localhost/proyecto2bc"; try { Class.forName ("com.mysql.jdbc.Driver").newInstance(); System. out. println("Conexion exitosa"); System. out. println(ex. getMessage()); } } public static Conexion getInstancia() { if (instancia == null) instancia = new Conexion(); return instancia; } try { stm = con.createStatement(); res=stm.executeQuery("select * from insumo"); System. out. println(ex. getMessage()); } return res; } String query ="insert into insumo values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; pstm.setString(1, ID); pstm.setString(2, Tipo); pstm.setString(3, marca); pstm.setString(4, version); pstm.setString(5, modelo); pstm.setString(6, potencia); pstm.setDouble(7,tamaño); pstm.setString(8, descripcion); pstm.setInt(9, cantidad); pstm.setInt(10, precio); pstm.executeUpdate(); System. out. println(ex. getMessage());; } } String query ="delete from libro where ID = ?"; pstm.setString(1, ID); pstm.execute(); } try { boolean igual=false; ResultSet rs =stm. executeQuery("select * from insumo"); while(rs.next()){ String ID =rs. getString("ID_Insumo"); String Tipo =rs. getString("tipo_Insumo"); String marca =rs. getString("marca"); String version =rs. getString("version"); String modelo =rs. getString("modelo"); String potencia =rs. getString("potencia"); String tamaño =rs. getString("LongitudCable"); String descripcion =rs. getString("descripcion"); String cantidad =rs. getString("cant_insumo"); String precio =rs. getString("precio"); String[] Fila ={ID, Tipo, marca, version, modelo, potencia, tamaño, descripcion, cantidad, precio }; for(int i=0;i<modeloT.getRowCount(); i++){ int contador=0; for(int j=0;j<modeloT.getColumnCount();j++){ if(Fila[j].equals(tabla)){ contador++; } if(contador==50){ igual=true; } } } if(!igual) modeloT.addRow(Fila); } System. out. println(ex. getMessage()); } } }
JDialog que contiene la tabla package Presentacion; import java.sql.ResultSet; import javax.swing.table.DefaultTableModel; import Logica.*; import java.sql.Connection; import java.sql.SQLException; import java.sql.Statement; public class frmArticulo extends javax. swing. JDialog { static Conexion con = Conexion.getInstancia(); super(parent, modal); String [] titulosinsumos = {"ID", "Tipo", "Marca", "Version", "Modelo", "Potencia", "Tamaño", "Descripcion", "Cantidad", "Precio" }; @Override public boolean isCellEditable(int filas, int columnas) { if(columnas == 10){ return true; } else { return false; } } }; try { while (rs.next()){ String ID [] = {rs. getString(1),rs. getString(2),rs. getString(3),rs. getString(4),rs. getString(5),rs. getString(6), String. valueOf(rs. getFloat(7)),rs. getString(8), Integer. toString(rs. getInt(9)), Integer. toString(rs. getInt(10))}; lista.addRow(ID); } } initComponents(); tablaInsumo.setModel(lista); } @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code"> private void initComponents() { tablaInsumo = new javax. swing. JTable(); btnEliminar = new javax. swing. JButton(); btnEditar = new javax. swing. JButton(); btnAñadir = new javax. swing. JButton(); btnSalir = new javax. swing. JButton(); btnActualizar = new javax. swing. JButton(); public void windowActivated (java. awt. event. WindowEvent evt ) { formWindowActivated(evt); } public void windowOpened (java. awt. event. WindowEvent evt ) { formWindowOpened(evt); } }); }, } )); jScrollPane1.setViewportView(tablaInsumo); btnEliminar.setText("Eliminar Articulo"); btnEditar.setText("Editar Articulo"); public void actionPerformed (java. awt. event. ActionEvent evt ) { btnEditarActionPerformed(evt); } }); btnAñadir.setText("Añadir Articulo"); public void actionPerformed (java. awt. event. ActionEvent evt ) { btnAñadirActionPerformed(evt); } }); btnSalir.setText("Salir"); public void actionPerformed (java. awt. event. ActionEvent evt ) { btnSalirActionPerformed(evt); } }); btnActualizar.setText("Actualizar"); public void actionPerformed (java. awt. event. ActionEvent evt ) { btnActualizarActionPerformed(evt); } }); 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) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) . addComponent(btnEliminar, javax. swing. GroupLayout. Alignment. LEADING, javax. swing. GroupLayout. DEFAULT_SIZE, 124, Short. MAX_VALUE) . addComponent(btnEditar, javax. swing. GroupLayout. Alignment. LEADING, javax. swing. GroupLayout. DEFAULT_SIZE, javax. swing. GroupLayout. DEFAULT_SIZE, Short. MAX_VALUE) . addComponent(btnAñadir, javax. swing. GroupLayout. Alignment. LEADING, javax. swing. GroupLayout. DEFAULT_SIZE, javax. swing. GroupLayout. DEFAULT_SIZE, Short. MAX_VALUE) . addComponent(btnSalir, javax. swing. GroupLayout. DEFAULT_SIZE, javax. swing. GroupLayout. DEFAULT_SIZE, Short. MAX_VALUE)) .addComponent(btnActualizar)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) . addComponent(jScrollPane1, javax. swing. GroupLayout. DEFAULT_SIZE, 685, Short. MAX_VALUE) .addContainerGap()) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() . addContainerGap(98, Short. MAX_VALUE) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addComponent(btnActualizar) . addPreferredGap(javax. swing. LayoutStyle. ComponentPlacement. RELATED, javax. swing. GroupLayout. DEFAULT_SIZE, Short. MAX_VALUE) .addComponent(btnAñadir, javax.swing.GroupLayout.PREFERRED_SIZE, 61, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(18, 18, 18) .addComponent(btnEditar, javax.swing.GroupLayout.PREFERRED_SIZE, 61, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(18, 18, 18) .addComponent(btnEliminar, javax.swing.GroupLayout.PREFERRED_SIZE, 61, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(18, 18, 18) .addComponent(btnSalir, javax.swing.GroupLayout.PREFERRED_SIZE, 65, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(28, 28, 28)) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 372, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap()))) ); pack(); }// </editor-fold> private void btnAñadirActionPerformed (java. awt. event. ActionEvent evt ) { new frmAñadir(this,true,false).setVisible(true); } private void btnSalirActionPerformed (java. awt. event. ActionEvent evt ) { dispose(); } private void btnEditarActionPerformed (java. awt. event. ActionEvent evt ) { new frmAñadir(this,true,true).setVisible(true); } private void formWindowOpened (java. awt. event. WindowEvent evt ) { } private void formWindowActivated (java. awt. event. WindowEvent evt ) { } private void btnActualizarActionPerformed (java. awt. event. ActionEvent evt ) { } // Variables declaration - do not modify private javax. swing. JButton btnActualizar ; private javax. swing. JButton btnAñadir ; private javax. swing. JButton btnEditar ; private javax. swing. JButton btnEliminar ; private javax. swing. JButton btnSalir ; public static javax. swing. JTable tablaInsumo ; // End of variables declaration }
PD: El codigo en general es autogenerado por el diseñador de NetBeans, esta tambien el JDialog que contiene el formulario (Por algun motivo, el cual creo es el tamaño de el mensaje, no puedo enviarlo). Si pudieran resolver mi duda lo agradeceria mucho
|
|
|
2
|
Programación / Java / Crear ArrayList a partir de una clase
|
en: 1 Junio 2019, 14:41 pm
|
Buenas, tengo un problema, tengo un ejercicio el cual me pide hace 3 clases diferentes (En este caso, electrodomestico - lavadora - television) , ademas de tener una clase constante (En este caso K ) , bueno mi problema radica en que tengo que crear una 4ta clase la cual contenga un ArrayList con los atributos de Electrodomesticos (Al menos, ya con saber hacer ese puedo hacer los demas). public class Electrodomestico { //La ya mencionada clase "Electrodomestico" protected static final int PrecioFinal = 0; //Sus atributos static int precio = K.precio; static String color = K. color; static char consumo = K.consumo; static int peso = K.peso; public Electrodomestico () { //Constructor por defecto } public Electrodomestico (int precio, int peso) { //Constructor con atributo precio y peso this.precio = precio; this.peso = peso; } public Electrodomestico (int precio, String color, char consumo, int peso ) { //Constructor con todos los atributos this.precio = PrecioFinal(precio, consumo, peso); this.color = color; this.consumo = ConsultaConEng(consumo); this.peso = peso; } public static int getPrecio() { // Getters return precio; } public static String getColor () { return color; } public static char getConsumo() { return consumo; } public static int getPeso() { return peso; } public static char ConsultaConEng (char ConsumoEng) { //Metodos para comparar if (ConsumoEng<'A' || ConsumoEng>'F') { ConsumoEng = 'F'; } return ConsumoEng; } public static int PrecioFinal (int ConsultaPrecio, char ConsumoEng, int Peso) { int ValorLetra =0; int ValorPeso =0; if (ConsumoEng == 'A') { ValorLetra = 100; } if (ConsumoEng == 'B') { ValorLetra = 80; } if (ConsumoEng == 'C') { ValorLetra = 60; } if (ConsumoEng == 'D') { ValorLetra = 50; } if (ConsumoEng == 'E') { ValorLetra = 30; } if (ConsumoEng == 'F') { ValorLetra = 10; } if (Peso>0 && Peso<20) { ValorPeso = 10; } if (Peso>=20 && Peso<50) { ValorPeso = 50; } if (Peso>=50 && Peso<80 ) { ValorPeso = 80; } if (Peso>=80) { ValorPeso= 100; } ConsultaPrecio = ValorPeso + ValorLetra; return ConsultaPrecio; } }
Cito la letra del ejercicio (ACLARO: NO QUIERO QUE ME RESUELVAN EL EJERCICIO, SINO QUE ME DEN UNA AYUDA DE COMO SEGUIR ESTO.) : Ahora crea una clase ejecutable que realice lo siguiente: Crea un array de Electrodomesticos de 10 posiciones. Asigna a cada posición un objeto de las clases anteriores con los valores que desees. Ahora, recorre este array y ejecuta el método precioFinal(). Por ejemplo, si tenemos un Electrodomestico con un precio final de 300, una lavadora de 200 y una televisión de 500, el resultado final será de 1000 (300+200+500) para electrodomésticos, 200 para lavadora y 500 para televisión. import java.util.ArrayList; //Esto es lo que tengo hasta ahora sobre la clase ejecutable public class Ejecutable { public static void main (String [] args ) { Ejecutable E1 = new Ejecutable (); } }
Si me pudieran ayudar a como seguir se los agradeceria. PD: lo vuelvo a repetir por las dudas NO QUIERO QUE ME TERMINEN EL EJERCICIO SINO UN EMPUJON DE COMO SEGUIRLO O EN QUE ME PUDE HABER EQUIVOCADO, gracias
|
|
|
3
|
Foros Generales / Dudas Generales / Duda sobre batch o lote
|
en: 27 Octubre 2018, 02:23 am
|
Buenas gente del foro, vengo con una duda capaz bastante "boba" y de principiante totalmente, pero es para un informe de trabajo, la duda en cuestion es: ¿Batch o archivos por lotes es lo mismo o tiene alguna diferencia? , Cualquier diferencia por minima que sea me sirve.
Desde ya gracias!
|
|
|
4
|
Programación / Java / Pasar datos de ArrayList entre metodos (DUDA)
|
en: 7 Octubre 2018, 15:18 pm
|
Buenas! tengo una gran duda, utilize " arraylist" para crear un array dinamico, el cual obviamente crezca tanto como el usuario desee, ahora bien... Quiero pasar los datos que tenga un arraylist de un metodo a otro public void Vehiculos () { int op1, n; String busca, busca2, matri, mark, model, col, cant ; do { System. out. println("1.1- Registrar"); System. out. println("1.2- Modificar"); System. out. println("1.3- Eliminar"); System. out. println("1.4- Listar todos"); System. out. println("1.5- Buscar"); System. out. println("0- Volver"); op1 = dato.nextInt(); switch (op1) { case 1: System. out. print("Cuantos vehiculos desea registrar? "); n = dato.nextInt(); dato.nextLine(); for (int f= 0; f<n ; f++) { System. out. print("Matricula: "); matri = dato.nextLine(); matricula.add(f, matri); ArrayList<String> matriculaclon = (ArrayList<String>) matricula.clone(); mark = dato.nextLine(); marca.add(f, mark); ArrayList<String> marcaclon = (ArrayList<String>) marca.clone(); model = dato.nextLine(); modelo.add(f, model); ArrayList<String> modeloclon = (ArrayList<String>) modelo.clone(); col = dato.nextLine(); color.add(f, col); ArrayList<String> colorclon = (ArrayList<String>) color.clone(); System. out. print("Cantidad de puertas: "); cant = dato.nextLine(); cantpuertas.add(f, cant); ArrayList<String> cantpuertasclon = (ArrayList<String>) cantpuertas.clone(); } break; case 2: break; case 3: System. out. print("Matricula del que desea eliminar: "); dato.nextLine(); busca2 = dato.nextLine(); for (int f= 0; f<matricula.size(); f++) { if (f == matricula.indexOf(busca2)) { matricula.remove(f); marca.remove(f); modelo.remove(f); color.remove(f); cantpuertas.remove(f); } } break; case 4: System. out. println("Listado de vehiculos:"); System. out. println("-----------------------------"); for (int f= 0; f<matricula.size(); f++) { System. out. println("Matricula: "+matricula. get(f )+" |Marca: "+marca. get(f )+" |Modelo: "+modelo. get(f )+" |Color: "+color. get(f )+" |Cantidad de puertas: "+cantpuertas. get(f )); } break; case 5: System. out. println("Matricula del vehiculo que desea buscar: "); busca = dato.next(); for (int x = 0; x<matricula.size(); x++) { if (x == matricula.indexOf(busca)) { System. out. println("Matricula: "+matricula. get(x )+" Marca: "+marca. get(x )+" Modelo: "+modelo. get(x )+" Color: "+color. get(x )+" Cantidad de puertas: "+cantpuertas. get(x )); System. out. println("El vehiculo se encuentra en la posicion "+(x +1)); } } break; case 0: MenuPrincipal(); } }while (op1 != 0);
Como pueden ver aqui arriba, yo creo el arraylist con diferentes nombres, y mi intencion es guardar de alguna forma, o pasar de alguna forma los datos de alguna de las array's a otro metodo el cual es este: public void Alquileres () { int op3, z; do { System. out. println("3.1- Alquilar"); System. out. println("3.2- Listar autos alquilados"); System. out. println("3.3- Consultar Estado"); System. out. println("0- Volver"); op3 = dato.nextInt(); switch(op3) { case 1: dato.nextLine(); System. out. print("Matricula del vehiculo: "); matri = dato.nextLine(); for (int f= 0; matricula.size()) { } } }while(op3 != 0);
Posiblemente encuentren mas errores que no vienen al caso (Lo se soy muy nuevo en esto jaja!)... Utilize " ArrayListnombre.clone" pero no puedo "clonarlo" a otro metodo, o mejor dicho no se como hacerlo , Por favor abstenerse de configurarme el codigo y pasarmelo, quiero aprender de mis errores, desde ya muchas gracias!
|
|
|
5
|
Programación / Java / Como crear un array (o arreglo) dinamico
|
en: 5 Octubre 2018, 22:24 pm
|
Hola a todos, ya es mi 3er post (tengo miedo de ya parecer molesto ) mi duda es, como puedo crear un array (o arreglo) que no sea estatico, es decir que no quede con un valor fijo y pueda "crecer" cuando en programador o el usuario quiera Ejemplo : System. out. print("Cuantos se van a registrar? "); x = dato.nextInt(); if (num<=0) { dato.nextLine(); for (int f= 0; f<CI.length; f++) { CI [f] = dato.nextLine(); nom [f] = dato.nextLine(); System. out. print("Apellido: "); ape [f] = dato.nextLine(); System. out. print("Telefono: "); tel [f] = dato.nextLine(); mail [f] = dato.nextLine(); } } if (num>0) { dato.nextLine(); for (int f= num; f<CI.length ; f++ ) { CI [f] = dato.nextLine(); nom [f] = dato.nextLine(); System. out. print("Apellido: "); ape [f] = dato.nextLine(); System. out. print("Telefono: "); tel [f] = dato.nextLine(); mail [f] = dato.nextLine(); } } num = num + x;
Ignoren los datos que se piden, el problema de aqui es que cuando yo quiero "listar" estos arreglos con sus respectivos datos, los primeros datos ingresados quedan en "null", lo que pretendo yo con esto es que la array crezca sin perder los anteriores datos... PD: "num" es un contador (nose el termino tecnico real aqui en colegio le llaman asi ) y "num" empieza con valor 0
|
|
|
6
|
Programación / Java / Problema con switch
|
en: 5 Octubre 2018, 21:04 pm
|
Buenas tengo un problema con un switch [code]public void Vehiculos () { int op1, n; do { System. out. println("1.1- Registrar"); System. out. println("1.2- Modificar"); System. out. println("1.3- Eliminar"); System. out. println("1.4- Listar todos"); System. out. println("1.5- Buscar"); System. out. println("0- Volver"); op1 = dato.nextInt(); switch (op1) { case 1: System. out. print("Cuantos vehiculos desea registrar? "); n = dato.nextInt(); for (int f= 0; f<n ; f++) { dato.nextLine(); System. out. print("Matricula: "); matricula [f] = dato.nextLine(); marca [f] = dato.nextLine(); modelo [f] = dato.nextLine(); color [f] = dato.nextLine(); System. out. print("Cantidad de puertas: "); cantPuertas [f] = dato.next(); } break; case 2: break; case 3: System. out. println("Cual desea eliminar? "); busca2 = dato.nextLine(); for (int f= 0; f<matricula.length; f++) { if (busca2.equals(matricula [f])) { matricula [f] = null; modelo [f] = null; color [f] = null; marca [f] = null; cantPuertas [f] = null; } } for (int f= 0; f<matricula.length; f++) { System. out. println("Matricula: "+matricula [f ]+" Marca: "+marca [f ]+" Modelo: "+modelo [f ]+" Color: "+color [f ]+" Cantidad de puertas: "+cantPuertas [f ]); } break; case 4: System. out. println("Listado de vehiculos:"); System. out. println("-----------------------------"); for (int f= 0; f<matricula.length; f++) { System. out. println("Matricula: "+matricula [f ]+" Marca: "+marca [f ]+" Modelo: "+modelo [f ]+" Color: "+color [f ]+" Cantidad de puertas: "+cantPuertas [f ]); } break; case 5: System. out. println("Matricula del vehiculo que desea buscar: "); busca = dato.next(); for (int x = 0; x<matricula.length; x++) { if (busca.equals(matricula [x])) { System. out. println("Matricula: "+matricula [x ]+" Modelo: "+modelo [x ]+" Color: "+color [x ]+" Cantidad de puertas: "+cantPuertas [x ]); System. out. println("El vehiculo se encuentra en la posicion "+(x +1)); } } break; case 0: MenuPrincipal(); } }while (op1 != 0);
Cuando quiero usar el case 3 , me vuelve a lanzar el menu principal, las demas opciones funcionan bien, solo esa me da error PD: No dar importancia a el case 2 (Aunque si quieren darme una idea de como hacer para modificar un array seria de gran ayuda ) [/code]
|
|
|
|
|
|
|