Foros del Web » Programación para mayores de 30 ;) » Java »

Duda con JScrollPane

Estas en el tema de Duda con JScrollPane en el foro de Java en Foros del Web. Hola a todos, tengo una ventana, en la que tengo una JTable metida dentro de un JScrollPane, y un botón añadir fila. Quiero que cuando ...
  #1 (permalink)  
Antiguo 11/07/2008, 01:02
 
Fecha de Ingreso: noviembre-2007
Mensajes: 121
Antigüedad: 16 años, 5 meses
Puntos: 0
Duda con JScrollPane

Hola a todos, tengo una ventana, en la que tengo una JTable metida dentro de un JScrollPane, y un botón añadir fila. Quiero que cuando añada una nueva fila el ScrollPane aparezca al final del todo y la fila aparezca seleccionada y se vea la nueva fila añadida seleccionada. EL código que tengo dentro del método que define la acción es el siguiente:


public void actionPerformed(ActionEvent evt) {
Container panelBotonera = ((JComponent) evt.getSource()) .getParent();
Container panelGrupo = ((JComponent) panelBotonera).getParent();
Component ScrollContactos = panelGrupo.getComponent(0);
Component vista = ((JScrollPane) ScrollContactos) .getComponent(0);
Component Tabla = ((JViewport) vista).getView();
TableModel myModel = ((ContactosJTable) Tabla).getModel();
((ContactosJTablaModel) myModel).addNewRow();
int filanueva=(((ContactosJTable) Tabla).getModel()).getRowCount();

((ContactosJTable)Tabla).setRowSelectionInterval(f ilanueva-1,filanueva-1);
(((JScrollPane)ScrollContactos).getVerticalScrollB ar()).setValue((((JScrollPane)ScrollContactos).get VerticalScrollBar()).getMaximum());

}
};

Poniendolo así , el ScrollPane no se entera de que he añadido una nueva fila, y al pedir que se ubique al final se queda justo en la fila anterior no al final del todo. He probado a poner ((ContactosJTable) Tabla).revalidate(); a ver si es que se tenia q enterar la vista del Scrooll q se ha añadido una nueva fila en la tabla pero nada. ¿Alguien podría echarme una mano para coseguir que la barra vertical del Scroll pane aarezca al final del todo y muestra la nueva fila añadida?

Muchas gracias de antemano.
Saludos
  #2 (permalink)  
Antiguo 11/07/2008, 02:02
 
Fecha de Ingreso: noviembre-2007
Mensajes: 121
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: Duda con JScrollPane

Hola, ya lo he resuelto, lo pongo por aquí por si alguie lo necesita alguna vez:
SwingUtilities.invokeLater( new Runnable() {
public void run() {
(((JScrollPane)ScrollContactos).getVerticalScrollB ar()).setValue((((JScrollPane)ScrollContactos).get VerticalScrollBar()).getMaximum());;
}
});

El problema era que se estaba llamando al getMaximum antes de que se actualizara la taba en sí, al llamar al inveokeLater se espera a que se termine de jecutar la actualización de la tabla y luego se ubica el Scroll.

Saludos y gracias
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:29.