public void createSpringLayout(SpringLayout spring, JLabel label, JScrollPane scrollPane, JPanel buttonPanel) {
spring.putConstraint(SpringLayout.NORTH, label, 10, SpringLayout.NORTH, this);
spring.putConstraint(SpringLayout.WEST, label, 10, SpringLayout.WEST, this);
spring.putConstraint(SpringLayout.NORTH, scrollPane, 10, SpringLayout.SOUTH, label);
spring.putConstraint(SpringLayout.WEST, scrollPane, 0, SpringLayout.WEST, label);
spring.putConstraint(SpringLayout.EAST, scrollPane, -10, SpringLayout.EAST, this);
spring.putConstraint(SpringLayout.NORTH, buttonPanel, Spring.constant(10, 30, 30), SpringLayout.SOUTH, scrollPane);
spring.putConstraint(SpringLayout.SOUTH, buttonPanel, -10, SpringLayout.SOUTH, this);
spring.putConstraint(SpringLayout.WEST, buttonPanel, 0, SpringLayout.WEST, label);
}
上面有所有东西的两个Jpanel使用相同的超类以获得更好的外观。
然而,正如您所看到的,如果滚动窗格的内容太宽,滚动窗格只会在底部使用额外的空间来创建水平滚动条。
即使我告诉Springlayout滚动窗格和按钮面板之间的弹簧可以在10到30之间。
我认为,首先调用SpringLayoutManager来布局其组件,然后滚动窗格出现并注意到其显示的组件不适合视口,并创建了一个滚动条,而SpringLayoutManager对此一无所知。
我找不到任何解决方案来提前告诉滚动窗格计算其所需的大小,或者让它从一开始就不使用更多的空间。