Java 限制JScrollPane视图宽度
如何限制Java 限制JScrollPane视图宽度,java,swing,jscrollpane,Java,Swing,Jscrollpane,如何限制JScrollPanel视图宽度?我不希望在任何情况下发生水平滚动。我试图提供自己的JViewport,但这没有多大帮助 private static class WidthRestrictingViewport extends JViewport { private Container contents; public WidthRestrictingViewport(final Container cnts) { conten
JScrollPanel
视图宽度?我不希望在任何情况下发生水平滚动。我试图提供自己的JViewport
,但这没有多大帮助
private static class WidthRestrictingViewport extends JViewport {
private Container contents;
public WidthRestrictingViewport(final Container cnts) {
contents = cnts;
}
@Override
public Dimension getPreferredSize() {
if (getParent() instanceof JScrollPane) {
JScrollPane sp = (JScrollPane) getParent();
return new Dimension(sp.getWidth(), contents.getHeight());
}
return super.getPreferredSize();
}
@Override
public Dimension getMaximumSize() {
return getPreferredSize();
}
}
以及创建JScrollPane
Container fpdp = ....
JScrollPane sp = new JScrollPane();
sp.setViewport(new WidthRestrictingViewport(fpdp));
sp.setViewportView(fpdp);
我提供的
contents
实例采用其最大宽度,但我希望其宽度不超过JScrollPane
宽度,这样就不会发生水平滚动。我做错了什么?对不起,我解释得不好。我找到了一个办法。多亏了
我面临的另一个问题是ScrollablePanel
中的布局管理器错误。那是FlowLayout
,把一切搞砸了。我当时不理解,认为问题在于可滚动的界面的使用
所以我只需要使用ScrollablePanel
并将其布局管理器设置为BorderLayout
,现在一切都好了 我不明白这个问题。当JScrollPane
的内容比JScrollPane
的实际大小更大时,会发生什么情况。干脆切断?在这种情况下,您可以考虑仅使滚动条不可见(<代码> JSCROLPAANEαGeTraceZONTRONTROLSCROBAR > SETVIEW(FALSE));罗宾,不要被切断。将视图宽度缩小为滚动窗格宽度。想象一下,面板的边框布局和内容都放在中间。但在这种情况下,只有内容的宽度受到面板宽度的限制,内容的高度可能会根据需要增长(添加滚动条)。我不认为JViewPort
有责任限制其视图的宽度,这更多的是视图本身。特别是看一下界面