3

我有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似乎不起作用,任何帮助将不胜感激!

4

1 回答 1

4

引用如何使用滚动窗格

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

  • 所以你必须要么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

于 2012-11-24T18:53:24.973 回答