Java Swing-JScrollPane将视口宽度调整为JScrollPane宽度
我一直在尝试缩小Java Swing-JScrollPane将视口宽度调整为JScrollPane宽度,java,swing,layout,scroll,jscrollpane,Java,Swing,Layout,Scroll,Jscrollpane,我一直在尝试缩小JScrollPane的内容宽度,例如,我将水平滚动条策略设置为永不,但结果是没有滚动条出现,内容不再显示 我希望它看起来是这样的: 这是我的MCVE: final JPanel panel = new JPanel( new MigLayout( new LC().flowX().gridGapX( "20" ).fill() ) ); panel.add( new JXTitledSeparator( "Test" ), new CC().growX().spanX()
JScrollPane
的内容宽度,例如,我将水平滚动条策略设置为永不
,但结果是没有滚动条出现,内容不再显示
我希望它看起来是这样的:
这是我的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();
遗憾的是,我不知道如何做到这一点,JScrollPane
的JViewport
没有提供任何可能有用的方法,JScrollPane
本身也没有
此外,我已经尝试使用BoxLayout
和FlowLayout
而不是migloayout
来实现同样的效果,以验证migloayout
不是问题的原因。尝试设置收缩标签的最大宽度。
您不需要滚动条吗?
如果需要根据需要使用滚动条,从滚动窗格中
final JFrame frame = new JFrame( "Test" );
frame.setLayout(new BorderLayout());
frame.add( scrollPane , BorderLayout.CENTER);
frame.pack();
frame.setVisible( true );
使用边框布局,并在可见前移动包。您需要在面板上实现可滚动的界面
您可能希望实现getScrollableTracksViewportWidth()
方法来返回true
这将强制面板的宽度与视口的宽度匹配。然后,将根据布局管理器的规则调整面板上每个组件的大小
如果您不想自己实现可滚动
界面,那么您可以使用提供的方法来控制可滚动属性。我只希望标签在必要时收缩,因此我不能一般地减小maxWidth。是的,我不想要水平的滚动条
,我只想要垂直的滚动条
。我不知道你的是什么意思,或者如果需要,可以根据需要从滚动窗格常量中使用滚动条HORIZONTAL\u SCOLLBAR\u AS\u NEEDED
将显示一个滚动条,但我不想要滚动条,这就是问题所在。而pack调用并不重要,这只是调整帧的大小。尝试在右侧列上设置“收缩0”作为约束。仍然没有帮助。右边的柱子无论如何都没有缩小。