Ver Mensaje Individual
  #2 (permalink)  
Antiguo 29/07/2012, 11:29
Avatar de chuidiang
chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Respuesta: JScrollPane no me muestra scroll vertical

Hola:

Hay dos temas importantes.

Uno es que el JScrollPane entiende del tamaño de su viewPortview. Si no le añades un único componente (normalmente un JPanel si quieres algo más complejo que un solo componente) con el método setViewportView() o en el constructor de JScrollPane, el JScrollPane no tiene ni idea del tamaño de los componenentes ni sabe si tiene que mostrar scroll ni nada. No sé si lo haces así, pero deberías añadir un único JPanel al JScrollPane con los métodos indicados (el add() no vale) y añadir a ese JPanel los JLabel.

El segundo tema importante es que un JScrollPane pregunta el getPreferredSize() al JPanel o al componente que sea y el JPanel pregunta el getPreferredSize() a su layout y el layout lo calcula con todos los componentes (JLabel) que tiene dentro. Lo de JLabel.Y = labelHeight*i me hace pensar que estás usando un layout null y fijando el tamaño de los componentes a pelo. Si lo haces así, debes también sobrescribir el método getPreferredSize() del JPanel para que devuelva el tamaño total en pixels que quieres. De esta forma, el JScrollPane sabrá si necesita o no poner scroll vertical (y horizontal) y de qué tamaño. O bien, cada vez que añadas un JLabel, llamar al método setPreferredSize() del JPanel con su nueva dimensión total.

Se bueno.
__________________
Apuntes Java
Wiki de Programación