可滚动的JDesktopPane?
2022-09-04 22:15:19
Javaworld's在他们的网站上不再可用。我设法搜刮了一些副本,但没有一个工作。JScrollableDesktopPane
我得出的一个简单的解决方案可以像下面这样实现。它不是最漂亮的,但它肯定比默认行为更好。
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();
}
}
这个想法是包装在一个 中,在主框架上添加一个调整大小侦听器,然后评估 on 调整大小(或添加新元素)的内容。JDesktopPane
JScrollPane
JDesktopPane
希望这有助于那里的人。