Java - 使用SpringLayout的JScrollPane视图布局

时间:2012-11-24 18:37:31

标签: java swing jscrollpane springlayout

我的JScrollPane有一个使用SpringLayout的视图组件。

final JPanel panel = new JPanel(new SpringLayout());
// add stuff to panel here
final JScrollPane scrollPane = new JScrollPane(panel, JScrollPane.VERTICAL_SCROLLBAR_NEVER, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
getContentPane().add(scrollPane);

JScrollPane似乎不起作用,我们将非常感谢任何帮助!

1 个答案:

答案 0 :(得分:3)

引自How to Use Scroll Panes

除非您明确设置了滚动窗格的首选大小,否则滚动窗格会根据其九个组件的首选大小(视口,如果存在,还有两个滚动条,行和列标题,和四个角落)。最大的因素,也是大多数程序员关心的因素,是用于显示客户端的视口的大小。

  • 因此您必须在setPreferedSize(Dimension d)实例

    上调用JScrollPane
    final JPanel panel = new JPanel(new SpringLayout());
    // add stuff to panel here
    final JScrollPane scrollPane = new JScrollPane(panel, JScrollPane.VERTICAL_SCROLLBAR_NEVER, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
    scrollPane.setPreferredSize(new Dimension(300, 300));
    add(scrollPane);
    
  • 或覆盖用作查看端口的getPreferredSize() /组件的JPanel

    final JPanel panel = new JPanel(new SpringLayout()) {
    
        @Override
        public Dimension getPreferredSize() {
             return new Dimension(300, 300);
         }
     };
     // add stuff to panel here
     final JScrollPane scrollPane = new JScrollPane(panel, JScrollPane.VERTICAL_SCROLLBAR_NEVER, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
    add(scrollPane);
    

其他说明:

  • 不要不必要地延长JFrame课程。

  • 只需在add(..)实例上调用JFrame,因为呼叫转发到 contentPane