【问题标题】:Java Swing - JScrollPane fit Viewport width to JScrollPane widthJava Swing - JScrollPane 适合视口宽度到 JScrollPane 宽度
【发布时间】:2018-04-23 14:17:23
【问题描述】:

我一直在尝试使JScrollPane 的内容宽度缩小,例如。我已将HorizontalScrollBarPolicy 设置为NEVER,但这最终导致没有出现滚动条并且内容不再显示。

我希望它看起来像这样:

这是我的 MCVE:

final JPanel panel = new JPanel( new MigLayout( new LC().flowX().gridGapX( "20" ).fill() ) );

panel.add( new JXTitledSeparator( "Test" ), new CC().growX().spanX().wrap() );
panel.add( new JLabel( "Shrink me please!" ), new CC().minWidth( "1" ) );
panel.add( new JLabel( "Never shall anyone ever be able to shrink me." ), new CC().growX() );

final JScrollPane scrollPane = new JScrollPane( panel );
scrollPane.setHorizontalScrollBarPolicy( ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER );

final JFrame frame = new JFrame( "Test" );
frame.getContentPane().add( scrollPane );
frame.setVisible( true );
frame.pack();

遗憾的是,我不知道如何做到这一点,JScrollPaneJViewport 没有提供任何可能有用的方法,JScrollPane 本身也没有。

另外我已经尝试使用BoxLayoutFlowLayout 而不是MigLayout 来实现相同的目的,以验证MigLayout 不是问题的原因。

【问题讨论】:

  • 尝试将“shrink 0”设置为右列的约束。
  • 仍然没有帮助。反正右栏没有缩小。

标签: java swing layout scroll jscrollpane


【解决方案1】:

您需要在面板上实现Scrollable 接口。

您可能希望实现getScrollableTracksViewportWidth() 方法以返回true

这将强制面板的宽度与视口的宽度相匹配。然后面板上的每个组件都会根据布局管理器的规则来调整大小。

如果您不想自己实现Scrollable 接口,那么您可以使用Scrollable Panel,它提供了允许您控制可滚动属性的方法。

【讨论】:

    【解决方案2】:

    尝试设置收缩标签的最大宽度。
    你不需要滚动条吗?
    如果需要从滚动窗格常量中根据需要使用滚动条

    final JFrame frame = new JFrame( "Test" );
    frame.setLayout(new BorderLayout());
    frame.add( scrollPane , BorderLayout.CENTER);
    frame.pack();
    frame.setVisible( true );
    

    使用边框布局,并在可见之前移动包。

    【讨论】:

    • 我只希望标签在必要时缩小,所以我一般不能只减小 maxWidth。是的,我不想要水平的ScrollBar,我只想要垂直的ScrollBar。我不确定你对Or if needed use scrollbar as needed from scroll pane constants 的意思。
    • 即使在编辑了您的帖子之后,它仍然没有意义。 HORIZONTAL_SCOLLBAR_AS_NEEDED 将显示一个滚动条,但我不想要一个,这就是问题所在。并且 pack 调用无关紧要,它只是调整框架的大小。
    猜你喜欢
    • 2014-01-21
    • 2017-10-01
    • 1970-01-01
    • 2021-07-10
    • 2015-03-27
    • 2011-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多