Java - Jtable

 
Vista:

Jtable

Publicado por SirNeiklotBega (3 intervenciones) el 07/06/2007 11:29:07
Buenas tardes,
Tengo un grave problema en java, tengo una web XHTML con dos applets de Java, en uno de ellos aparece un JscrollPanel con una JTabla con un modelo de creación por defecto.
en el otro applet aparecen una serie de labels que se corresponden con los nombres de los campos de la tabla y una serie de texfields que se rellenan cuando seleccionamos un registro de la tabla en el otro applet.
Hasta ahi todo va bien, pero ahora cuando modifico esos campos en el applet y pulso aceptar me gustaria que la Jtable del otro applet se actualizara pero no lo hace.

Alguien se imagina que puede estar ocurriendo?

Y lo siento pero no se como repintar los componentes, he intentado mediante repaint(), mediante update(), y mediante remove() y después add(), pero no funciona nada de esto.

Creo que lo tendría todo solucionado si consigo que esta funcion me refresque la tabla cuando se le invoca:

public void Tabla()
{

try{
Indice=0;


Class.forName("com.mysql.jdbc.Driver").newInstance();

String URL="jdbc:mysql://localhost/"+NombreBase;
String User="root";
String Pass="";

int IndiceGeneral=1;

Campo=new String();
Query=new String[100];

Conexion=java.sql.DriverManager.getConnection(URL,User,Pass);

sentencia=Conexion.createStatement();

Query[0]="DESCRIBE "+NombreTabla;

Campo="Field";

resultado=sentencia.executeQuery(Query[0]);

resultado.last();
Numero=resultado.getRow();
Indicador=Numero;
resultado.first();

Numeros=new String[Numero];

while(Indice<Numero)
{
Numeros[Indice]=resultado.getString(Campo);
resultado.next();
Indice++;
}

//Recuperación de los nombres de los campos de la tabla

Saltos=Numero;
int auxiliar=0;
int Value=0;

Valores=new String[1000];

while(auxiliar<Indice)
{
Query[auxiliar]="Select * From "+NombreTabla;

resultado=sentencia.executeQuery(Query[auxiliar]);

resultado.last();
Numero=resultado.getRow();
resultado.first();

int aux=0;



if((Numeros[auxiliar]).equals(CampoId))
{
Id=auxiliar;
}

while(aux<Numero)
{

Valores[Value]=resultado.getString(Numeros[auxiliar]);

resultado.next();
aux++;
Value++;
}

auxiliar++;
}
Indice=0;
}
catch(Exception e)
{
System.out.println(e);
}


Indice=0;
int Value=0;

int auxiliar=0;

final DefaultTableModel modelo=new DefaultTableModel();

while(Indice<Indicador)
{

modelo.addColumn(Numeros[Indice]);

Indice++;
}


Indice=0;


while(Indice<Numero)
{
Object [] fila = new Object[2];
modelo.addRow ( fila );
Indice++;
}
Indice=0;

while(auxiliar< Saltos)
{

while(Indice<Numero)
{
modelo.setValueAt(Valores[Value], Indice, auxiliar);
Indice++;
Value++;
}
Indice=0;
auxiliar++;
}

Numero=0;

final JTable tabla1 = new JTable(modelo);

tabla1.setPreferredScrollableViewportSize(new Dimension(700,300));



tabla1.addMouseListener(new MouseAdapter()
{

public void mouseClicked(MouseEvent e)
{

int fila = tabla1.rowAtPoint(e.getPoint());
int columna = tabla1.columnAtPoint(e.getPoint());
Jmenu.show( e.getComponent(),e.getX(),e.getY() );
Object CellValue=tabla1.getValueAt(fila, columna);
IdPass=tabla1.getValueAt(fila, Id);
}

});

tabla1.setForeground( Color.blue );
tabla1.setBackground(new Color(0,255,255));
tabla1.setFont(new Font("Monospaced",Font.ITALIC,16));
tabla1.setSelectionForeground( Color.white );
tabla1.setSelectionBackground(new Color(128,128,128));
JScrollPane scrollPane1 = new JScrollPane(tabla1,
JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
JScrollPane. HORIZONTAL_SCROLLBAR_ALWAYS);

Panel q=new Panel(new GridLayout(1,1));
q.add(scrollPane1);

add(q);
repaint();

}


}

Esta función, la llamo desde otra función, pero no me redibuja la tabla, algo le falta....

Muchisimas gracias y un saludo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Jtable

Publicado por SirNeiklotBega (3 intervenciones) el 08/06/2007 08:33:49
Buenos días, de las 11 veces que se ha leído mi texto, no tengo contestación....

Es un asunto tan complicado?

un saludo y ánimo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Jtable

Publicado por Jefree (1 intervención) el 21/09/2007 17:22:11
Segun lo que entiendo tienes un DefaultTableModel como fuente de datos para el JTable.

Actualizar los valores del DefaultTableModel no implica que estos cambien automaticamente en la tabla.

intenta llamar alguno de los metodos que comienzan por "fire" del DefaultTableModel

ejemplo:

DefaultTableModel modelo = new ....bla bla bla

// ..... haces cambios en una celda, digamos la i, j.....

// luego....

modelo.fireTableCellUpdate( i , j ); // Esto hace que la celda se renderice de nuevo

tambien puedes usar otro de estos segun lo que necesites:

fireTableRowsUpdated( filaInicio , filaFin );
fireTableDataChanged();
fireTableStructureChanged();

etc...

Creo que eso es lo que preguntas......
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar