Javaworlds JScrollableDesktopPane
ist nicht mehr auf ihrer Website verfügbar. Ich schaffte es, einige Kopien davon zu kopieren, aber keiner von ihnen funktioniert.
Eine einfache Lösung, die ich abgeleitet habe, kann erreicht werden, etwas wie das folgende zu tun. Es ist nicht das Schönste, aber es funktioniert sicherlich besser als das Standardverhalten.
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();
}
}
Die Idee ist, in einem JDesktopPane
JScrollPane
einzuwickeln, einen Resize Zuhörer auf dem Hauptrahmen hinzuzufügen und bewerten dann den Inhalt der JDesktopPane
auf Resize (oder das Hinzufügen neue Elemente).
Hoffe das hilft jemand da draußen.
Das ist eigentlich meine aktuelle Lösung, aber ich bin nicht begeistert davon. Ich habe mich entschieden, hier zu fragen, bevor ich mein eigenes Projekt in Angriff nehme, um eines zu schaffen, das mir gefällt. –