Hey hola amigos (n.n)/ tengo un problema soy un rockie en Java, es mi primera aplicacion. y empece a hacerla desde 0 gracias al internet y algunos conocimientos de pseudocodigo.
ahora, estuve navegando por la red, buscando comprender como re-fillear o recargar la tabla para que simule una conexion en tiempo real. extraigo datos de una basede datos de SQL y tambien una de MYSQL. entonces necesito saber bien que onda. les dejo la clase donde se realiza la mayor parte del trabajo, tambien tengo otra. donde se llena el resultset, y el main.
pueden ayudarme para poder realizar el refill??
ahora, estuve navegando por la red, buscando comprender como re-fillear o recargar la tabla para que simule una conexion en tiempo real. extraigo datos de una basede datos de SQL y tambien una de MYSQL. entonces necesito saber bien que onda. les dejo la clase donde se realiza la mayor parte del trabajo, tambien tengo otra. donde se llena el resultset, y el main.
pueden ayudarme para poder realizar el refill??
Código (java) [Seleccionar]
public class Uno extends JFrame implements ActionListener{
JScrollPane scroll;
modelo model;
JTable tabla;
final String[] combstatus = { "Factura Firmada", "Faltante", "Factura sin firma", "Contra recibo","Cheque sin fondos" };
final String[] combsuc = { "León", "Irapuato", "Celaya", "Queretaro" };
final String[] combresp = { "José Manuel Gomez Garza", "María Esperanza Tavarez", "Ubaldo de Jesús Robledo Muñoz", "Juan Martin Palacios Manrique" };
boolean valor=false;
final String[] combfil1 = { "Clave Clie", "Nombre Clie", "Tipo Doc", "Estado", "Sucursal", "Responsable" };
final String[] combfil2 = { "Clave Clie", "Nombre Clie", "Tipo Doc", "Estado", "Sucursal", "Responsable" };
final String[] combfil3 = { "Clave Clie", "Nombre Clie", "Tipo Doc", "Estado", "Sucursal", "Responsable" };
JComboBox combofil1 = new JComboBox(combfil1);
JComboBox combofil2 = new JComboBox(combfil2);
JComboBox combofil3 = new JComboBox(combfil3);
JTextField filtro1 = null;
JTextField filtro2 = null;
JTextField filtro3 = null;
JPanel panelfil;
JButton guardar;
JButton refrescar;
JButton filtrar;
JLabel etiqueta1;
int rowtabla;
int coltabla;
TableRowSorter<modelo> sorter;
String sqlcon="SELECT V.CVE_CLIE, V.NOMBRE, V.DESCR as ID_MOV,V.REFER, CONVERT(CHAR(10), M.FECHAELAB,101) AS FECHAELAB,\n" +
"CAST(CONVERT(VARCHAR, CAST((M.IMPORTE * M.SIGNO) + (ISNULL(V.SALDO, 0.00)) AS MONEY),1) AS VARCHAR) AS SALDO \n" +
"FROM PRUEBADOS V LEFT JOIN Interfaz.dbo.CUEN_M03 M ON V.REFER = M.REFER AND V.CVE_CLIE = M.CVE_CLIE \n" +
"WHERE ((M.IMPORTE * M.SIGNO) + (ISNULL(V.SALDO, 0.00))) > 1 OR ((M.IMPORTE * M.SIGNO)+ (ISNULL(V.SALDO, 0.00))) < -1 ";
DefaultCellEditor calen;
public Uno(){
super ("Cuentas por pagar");
model = new modelo();
tabla = new JTable(model);
tabla.setPreferredScrollableViewportSize(new Dimension(500,70));
rowtabla=tabla.getRowCount();
coltabla=tabla.getColumnCount();
panelfil = new JPanel();
filtro1 = new JTextField(15);
filtro2 = new JTextField(15);
filtro3 = new JTextField(15);
etiqueta1 = new JLabel();
scroll = new JScrollPane(tabla);
tabla.setAutoCreateRowSorter(true);
DefaultTableCellRenderer tcr = new DefaultTableCellRenderer();
tcr.setHorizontalAlignment(SwingConstants.RIGHT);
tabla.getColumnModel().getColumn(5).setCellRenderer(tcr);
sorter = new TableRowSorter<modelo>(model);
tabla.setRowSorter(sorter);
//tabla.updateUI();
JComboBox combostatus = new JComboBox(combstatus);
DefaultCellEditor dcestatus=new DefaultCellEditor(combostatus);
tabla.getColumnModel().getColumn(6).setCellEditor(dcestatus);
this.getContentPane().add(scroll);
//sucursal
JComboBox combosuc = new JComboBox(combsuc);
DefaultCellEditor dcesuc = new DefaultCellEditor(combosuc);
tabla.getColumnModel().getColumn(9).setCellEditor(dcesuc);
this.getContentPane().add(scroll);
//responsable
JComboBox comboresp = new JComboBox(combresp);
DefaultCellEditor dceresp = new DefaultCellEditor(comboresp);
tabla.getColumnModel().getColumn(10).setCellEditor(dceresp);
this.getContentPane().add(scroll);
tabla.getColumnModel().getColumn(0).setPreferredWidth(40);
tabla.getColumnModel().getColumn(1).setPreferredWidth(250);
tabla.getColumnModel().getColumn(2).setPreferredWidth(40);
tabla.getColumnModel().getColumn(3).setPreferredWidth(45);
tabla.getColumnModel().getColumn(4).setPreferredWidth(55);
tabla.getColumnModel().getColumn(5).setPreferredWidth(70);
tabla.getColumnModel().getColumn(6).setPreferredWidth(80);
tabla.getColumnModel().getColumn(7).setPreferredWidth(180);
tabla.getColumnModel().getColumn(8).setPreferredWidth(80);
tabla.getColumnModel().getColumn(9).setPreferredWidth(55);
tabla.getColumnModel().getColumn(10).setPreferredWidth(180);
tabla.getColumnModel().getColumn(11).setPreferredWidth(5);
tabla.setRowHeight(15);
guardar = new javax.swing.JButton("Guardar");
guardar.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
guardarActionPerformed(evt);
}
});
tabla.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
celdaclick(e);
}
});
filtrar = new javax.swing.JButton("Filtrar");
filtrar.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
filtrarActionPerformed(evt);
}
});
refrescar = new javax.swing.JButton("Refrescar");
refrescar.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
refrescarActionPerformed(evt);
}
});
getContentPane().add(panelfil, BorderLayout.CENTER);
tcr.setHorizontalAlignment(SwingConstants.RIGHT);
addWindowListener(new WindowAdapter(){
public void windowClosing (WindowEvent e) {
// setDefaultCloseOperation(DISPOSE_ON_CLOSE);
System.exit(0);
}
});
/* aqui va el codigo generado por Netbeans para el acomodo del swing en el Jframe*/
}
class modelo extends AbstractTableModel{
final Object[][] datos = getfilas(sqlcon);
final String [] columnas = getcolumnas();
public int getColumnCount() {
return columnas.length;
}
//retormanos el numero de elementos
//del array de datos
public int getRowCount() {
return datos.length;
}
//retornamos el elemento indicado
public String getColumnName(int col) {
return columnas[col];
}
//y lo mismo para las celdas
public Object getValueAt(int row, int col) {
return datos[row][col];
}
/*
* Este metodo sirve para determinar el editor predeterminado
* para cada columna de celdas
*/
Class[] columns = new Class[]{String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, String.class, Boolean.class};
public Class getColumnClass(int c) {
return columns[c];
}
public boolean isCellEditable(int row, int col) {
System.out.println("columna"+col + "Fila" + row);
Boolean set =new Boolean("false");
boolean isEditable = true;
isEditable = false;
if (col >= 0 && col <= 11) {
System.out.println("entro a el primer filtro 1-9");
Object value = getValueAt(row, 11);
if (value!=Boolean.FALSE ) {
isEditable = true;
}
} else {
isEditable=false;
}
return isEditable;
}
public void setValueAt(Object value, int row, int col) {
datos[row][col] = value;
fireTableCellUpdated(row, col);
}
}
private String[] getcolumnas(){
String columna[]=new String[]{"Cliente", "Nombre", "Tipo Doc", "DOCTO","Fecha de E.","Saldo","Estado","Comentarios","Fecha de Cobro","Sucursal","Responsable","Revisado"};
return columna;
}
private Object[][] getfilas(String sqlcon){
Object fila[][]=getsqlcon(sqlcon);
System.out.println("esto esssssssssss get slqcon"+getsqlcon(sqlcon));
return fila;
}
public static Object [][] getsqlcon(String squery){
Connection conexion=null;
try{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String url= "jdbc:sqlserver://127.0.0.1:1433;databaseName=Interfaz;user=SISTEMAS;password=administrador;";
conexion= DriverManager.getConnection(url);
Statement st = conexion.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
ResultSet rs = st.executeQuery(squery);
Object [][] arr = sArreglo(rs);
st.close();
rs.close();
conexion.close();
return arr;
}
catch(ClassNotFoundException ex){
JOptionPane.showMessageDialog(null,ex, "Error 1 en la conexion"+ex.getMessage(),JOptionPane.ERROR_MESSAGE);
conexion=null;
}
catch(SQLException ex){
JOptionPane.showMessageDialog(null,ex, "Error 2 en la Conexión"+ex.getMessage(),JOptionPane.ERROR_MESSAGE);
conexion=null;
}
catch(Exception ex){
JOptionPane.showMessageDialog(null, ex, "Error3 en la Conexión con la BD "+ex.getMessage(), JOptionPane.ERROR_MESSAGE);
conexion=null ;
}
return null;
}
private static Object [][] sArreglo(ResultSet rs){
Object sfila[][]=null;
int cols = 0;
int rows = 0;
int x=0;
String mov=null;
int movi=0;
try{
rs.last();
ResultSetMetaData rsmd = rs.getMetaData();
int ncols = rsmd.getColumnCount();
int nfils = rs.getRow();
cols=ncols;
rows=nfils;
sfila = new Object[nfils][12];
int j = 0;
rs.beforeFirst();
while (rs.next()){
for (int i=0;i<ncols;i++){
sfila[j][i]=rs.getObject(i+1);
if (i==0){
sfila[j][0]=rs.getString(i+1);
}
}
j++;
}
}
catch(NumberFormatException | SQLException ex){
System.out.print(ex.getMessage());
}
Dos mysql = new Dos();
mysql.conec(sfila);
return sfila;
}
JCalendar calendario;
JTextField fecha;
JButton confirmar;
JButton cancelar;
JDialog dlg;
String date;
String año;
String mes;
String dia;
JCalendar dp;
private void celdaclick(MouseEvent e)
{
JTable target = (JTable)e.getSource();
JPanel calpan = new JPanel();
JPanel calpancal = new JPanel();
JPanel calpanbut = new JPanel();
int row = target.getSelectedRow();
int column = target.getSelectedColumn();
confirmar=new JButton("Aceptar");
cancelar=new JButton("cancelar");
int status=0;
confirmar.addActionListener(this);
cancelar.addActionListener(this);
if (column==8)
{
if (tabla.getValueAt(row,11)!=Boolean.FALSE){
String fechaAnt=(String) tabla.getValueAt(row, column);
// JOptionPane.showMessageDialog(null,fechaAnt);
dlg = new JDialog(this, true);
dlg.setDefaultCloseOperation (WindowConstants.DO_NOTHING_ON_CLOSE);
dlg.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent we){
dlg.setTitle(null);
dlg.setVisible(false);
}
});
SimpleDateFormat format1 = new SimpleDateFormat("dd/MM/yyyy");
dp = new JCalendar();
date = format1.format(dp.getDate());
calpancal.add(dp);
calpanbut.add(confirmar);
calpanbut.add(cancelar);
calpan.add(calpancal);
calpan.add(calpanbut);
dlg.getContentPane().add(calpan);
dlg.pack();
dlg.setVisible(true);
String fechaNue = dlg.getTitle();
if (fechaAnt==(null)){
if(fechaNue==null){
tabla.setValueAt(fechaNue,row,column);
}else{
tabla.setValueAt(fechaNue,row,column);
}
}else if(fechaAnt!=null){
if (fechaNue==null){
tabla.setValueAt(fechaAnt, row, column);
}else{
tabla.setValueAt(fechaNue, row, column);
}
}
}
}
}
public void actionPerformed(ActionEvent e) {
if (e.getSource()==confirmar) {
año=Integer.toString(dp.getCalendar().get(java.util.Calendar.YEAR));
mes=Integer.toString(dp.getCalendar().get(java.util.Calendar.MONTH)+1);
dia=Integer.toString(dp.getCalendar().get(java.util.Calendar.DATE));
if (dia.length()==1){
dia="0"+dia;
}
if(mes.length()==1){
mes="0"+mes;
}
date = ""+dia+"/"+mes+"/"+año;
dlg.setTitle(date);
dlg.setVisible(false);
}
if (e.getSource()==cancelar) {
dlg.setTitle(null);
dlg.setVisible(false);
}
}
/*cuando apriete el boton que genere este listener es donde queiro actualizar lka tabla, volverla a cargar*/
private void refrescarActionPerformed(java.awt.event.ActionEvent evt){
}
private void guardarActionPerformed(java.awt.event.ActionEvent evt) {
Dos insertar = new Dos();
try {
insertar.insertar(tabla, rowtabla, coltabla);
}
catch (ParseException ex) {
Logger.getLogger(Uno.class.getName()).log(Level.SEVERE, null, ex);
}
}
public void filtrarActionPerformed(ActionEvent e){
int comb1=0;
int comb2=0;
int comb3=0;
switch (combofil1.getSelectedIndex()){
case 0:
comb1=0;
break;
case 1:
comb1=1;
break;
case 2:
comb1=2;
break;
case 3:
comb1=6;
break;
case 4:
comb1=9;
break;
case 5:
comb1=10;
break;
}
switch (combofil2.getSelectedIndex()){
case 0:
comb2=0;
break;
case 1:
comb2=1;
break;
case 2:
comb2=2;
break;
case 3:
comb2=6;
break;
case 4:
comb2=9;
break;
case 5:
comb2=10;
break;
}
switch (combofil3.getSelectedIndex()){
case 0:
comb3=0;
break;
case 1:
comb3=1;
break;
case 2:
comb3=2;
break;
case 3:
comb3=6;
break;
case 4:
comb3=9;
break;
case 5:
comb3=10;
break;
}
RowFilter<modelo, Object> multiFiltro = null;
RowFilter<modelo, Object> primerFiltro = null;
RowFilter<modelo, Object> segundoFiltro = null;
RowFilter<modelo, Object> tercerFiltro = null;
ArrayList<RowFilter<modelo,Object>> lista = new ArrayList<RowFilter<modelo,Object>>();
try{
primerFiltro = RowFilter.regexFilter("(?i)"+filtro1.getText(), comb1);
segundoFiltro=RowFilter.regexFilter("(?i)"+filtro2.getText(), comb2);
tercerFiltro=RowFilter.regexFilter("(?i)"+filtro3.getText(), comb3);
lista.add(primerFiltro);
lista.add(segundoFiltro);
lista.add(tercerFiltro);
multiFiltro = RowFilter.andFilter(lista);
}catch(java.util.regex.PatternSyntaxException ex) {
return;
}
sorter.setRowFilter(multiFiltro);
}
}