JScrollPane

Sara
15 de Abril del 2010
Hola, tengo un problema con las listas y los scroll, lo que quiero es que me salga una lista de productos a una lista, que sera dinamica. El caso es que con jList me sale todo perfecto, pero si la lista es mas larga que el alto de la lista, se corta. He visto por internet que se hace con JScrollPane, pero no se utilizarlo, lo que he conseguido entender seria algo as:

private JList getJList() {
if (jList == null) {
jList = new JList();
jList.setPreferredSize(new java.awt.Dimension(100,100));
jList.setLocation(new java.awt.Point(30,50));
jList.setSize(new java.awt.Dimension(220,60));
jList.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
jList.setLayoutOrientation(JList.VERTICAL);
jList.setVisibleRowCount(-1);

jList.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent e) {
...
}
});
JScrollPane listScroller = new JScrollPane(jList);
listScroller.setPreferredSize(new Dimension(250, 80));
}
return jList;
}

Luego tengo un jRadioButton en donde relleno el modelo:

for(int i=0; i<arraym.size(); i++){
modelo.addElement(arraym.get(i).getBiltegia());
}
jList.setModel(modelo);


que es lo que hago mal? esta bien iniciado el scroll??

César Augusto Cruz Tapia
03 de Mayo del 2010
Elimina la instruccion listScroller.setPreferredSize(new Dimension(250, 80)) y sustituyela por setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED);, Ademas cuando estas creando por primera vez tu lista estas ocultando la informacion a desplegar con la instruccion: jList.setVisibleRowCount(-1), el argumento q lleva esa instruccion determina el numero de filas q deseas q se muestren, por lo que debes determinar si usar este método para ajustar el tamaño de tu JList o la otra instrucción que usas q es:jList.setSize(...., ya que son redundantes. En tu radio button en el proceso del for supongo que lo ke pretendes es cargar nuevos valores o una nueva lista ¿? si es asi utiliza mejor el metodo updateUI(). o si lo ke kieres es simplemente llenar tu lista solo pasale el objeto array tal cual. mi correo es [email protected] cualkier comentario... Saludos