【问题标题】:Java - JScrollPane view layout with SpringLayoutJava - 使用 SpringLayout 的 JScrollPane 视图布局
【发布时间】:2012-11-24 18:37:30
【问题描述】:

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

【问题讨论】:

  • 这是sscce 的好问题!这将是一个演示您的问题的最小可编译和可运行代码示例。这将允许我们运行您的代码并修改它,甚至可能更正它。请在回复之前阅读该链接,因为它提供了有关 SSCCE 要求的许多重要细节。
  • The JScrollPane doesn't seem to work, any help would be greatly appreciated! 确保可行,但取决于,发布 SSCCE 仅演示了 JFrame、JScrollPane 和 JPanel(new SpringLayout()),hmmm empty JPanel 永远不会返回任何大小,返回 Dimension(0 , 0), 对于所有 LayourManagers

标签: java swing jscrollpane springlayout


【解决方案1】:

引用How to Use Scroll Panes

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

  • 所以您必须在 JScrollPane 实例上调用 setPreferedSize(Dimension d)

    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);
    
  • 或覆盖您的JPanel/ 组件中的getPreferredSize(),用作视口

    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 类。

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

【讨论】:

    猜你喜欢
    • 2016-09-05
    • 2011-01-21
    • 2012-08-13
    • 2014-04-30
    • 1970-01-01
    • 1970-01-01
    • 2021-01-30
    • 1970-01-01
    • 2012-09-14
    相关资源
    最近更新 更多