mostrar - panel in java
Scrollable JDesktopPane? (3)
Me gustaría agregar la capacidad de desplazamiento a javax.swing.JDesktopPane
. Pero el javax.swing.JScrollPane
en javax.swing.JScrollPane
no produce el comportamiento deseado.
La búsqueda en la web muestra que esto ha sido un problema durante bastante tiempo. Hay algunas soluciones , pero parecen ser bastante antiguas, y no estoy completamente satisfecho con ellas.
¿Qué soluciones mantenidas activamente conoces?
Utilicé la solución de JavaWorld al crear mi propio JScrollableDesktopPane.
He encontrado esto: http://www.javaworld.com/javaworld/jw-11-2001/jw-1130-jscroll.html?page=1
Es un buen tutorial con muchas explicaciones e informaciones sobre Swing & lo que permite crear un JscrollableDesktopPane con muchas cosas.
Tendrá que modificar un poco algunas partes del código para cumplir sus requisitos.
¡Disfruta!
JScrollableDesktopPane de JScrollableDesktopPane
ya no está disponible en su sitio web. Logré buscar algunas copias pero ninguna de ellas funciona.
Una solución simple que he obtenido se puede lograr haciendo algo como lo siguiente. No es el más bonito, pero ciertamente funciona mejor que el comportamiento predeterminado.
public class Window extends Frame {
JScrollPane scrollContainer = new JScrollPane();
JDesktopPane mainWorkingPane = new JDesktopPane();
public Window() {
scrollContainer.setViewportView(mainWorkingPane);
addComponentListener(new ComponentAdapter() {
public void componentResized(ComponentEvent evt) {
revalidateDesktopPane();
}
});
}
private void revalidateDesktopPane() {
Dimension dim = new Dimension(0,0);
Component[] com = mainWorkingPane.getComponents();
for (int i=0 ; i<com.length ; i++) {
int w = (int) dim.getWidth()+com[i].getWidth();
int h = (int) dim.getHeight()+com[i].getHeight();
dim.setSize(new Dimension(w,h));
}
mainWorkingPane.setPreferredSize(dim);
mainWorkingPane.revalidate();
revalidate();
repaint();
}
}
La idea es envolver JDesktopPane
en un JScrollPane
, agregar un oyente de cambio de tamaño en el Marco principal y luego evaluar el contenido de JDesktopPane
en el JDesktopPane
de tamaño (o agregar nuevos elementos).
Espero que esto ayude a alguien por ahí.