lunes, 31 de enero de 2011

JPanel con JScrollPane

En uno de mis proyectos he tenido el inconveniente de cargar datos en un jpanel (por lo visto algo muy fuera de lo normal, ya que no había solución clara) teniéndolo dentro de un jscrollpane no se llegaba a visualizarse mas que lo que abarcaba el tamaño del panel, vamos que el scroll no aparecía y por mas que refrescaba con getGraphics(); no había manera.
Descubrí por ahí el siguiente método de los JPanel setPreferredSize(); una bendición ya que es la solución a mis problemas. Aquí os dejo como quedaría el código:

JPanel panel = new JPanel();
JScrollPane scroll = new JScrollPane();
scroll .setBounds(132, 155, 502, 311);
scroll .setViewportView(panel);
scroll .getViewport().setView(panel);
panel.setLayout(null);
Creamos el jpanel creamos el jscrollpane definimos un tamaño al scroll y metemos en el scroll el panel. Por último el proceso de carga de datos usamos incluiremos:
panel.setPreferredSize(new Dimension(480,600);
Vamos variando los valores X, Y dependiendo de cuanto necesitamos para mostrar. El código de arriba variara ya que se supone el el jscrollpane estará en un jFrame, jDialog...

NOTA: parecerá una tontería pero buscar en internet a ver si hay algo referenciando a esta solución, por que a mí me a costado. Espero que para la próxima el siguiente que lo necesite lo encuentre antes de perder los nervios ;)

un saludo

6 comentarios:

  1. parcero..deberas q me sirvio....gracias..siga asi....

    ResponderEliminar
  2. Muchas gracias, en verdad es un dolor de cabeza!

    ResponderEliminar
  3. Descubrí por hay = Descubrí por ahí.
    haber si hay = a ver si hay.

    Muchas gracias por la solución.

    ResponderEliminar
  4. Perfecta solución, tardé bastante tiempo para encontrarla. Gracias

    ResponderEliminar
  5. Gracias bro, era lo que necesitaba , soplo paara aclarar por si alguien no pudo , el tamaño de la dimension del panel es el tamaño total y la visualizacion de scrool es lo que se mostrara en pantalla.

    ResponderEliminar
  6. Graciassss enserio muchas gracias

    ResponderEliminar