Java - 仅垂直滚动

标签 java swing jscrollpane

我正在尝试从 GURPS 创建一个字符表,它基本上是这样的:

/-Main Panel--------\
|/-Panel-----------\|
|\-----------------/|
|/-Another Panel---\|
||    Contents     ||
|\-----------------/|
\-------------------/

我需要它垂直滚动,但水平调整大小。我使用 BoxLayout 垂直排列面板,这是一种个人布局,可以完全适应容器中的内容,并尝试使用:

JScrollPane scrollPane = new JScrollPane(mainPanel);
scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);

但它没有按照我想要的方式工作,它不会改变其内容的水平尺寸。有人有什么想法吗?

最佳答案

默认情况下,添加到 JScrollPane 的组件以其首选尺寸()显示,并且当首选尺寸大于滚动 Pane 的尺寸时,会出现滚动条。

如果您想强制面板水平扩展/收缩以填充滚动 Pane 的宽度,那么您需要为面板实现 Scrollable 接口(interface)。

所以基本上您需要实现 getScrollableTracksViewportWidth() 方法来返回 “true”。现在主面板将调整大小以填充滚动 Pane 的宽度。

或者您可以查看Scrollable Panel,而不是自己实现Scrollable接口(interface)的所有方法。它为您提供这种支持。

关于Java - 仅垂直滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39195606/

相关文章:

java - 如何创建不可变对象(immutable对象)?

java - 按住 ALT 键并单击,删除 JList 上选定的元素

java - 需要有关嵌套滚动 Pane 逻辑的帮助

java - 滚动条不滚动

java - alwaysMatch 中的无效功能 : unhandledPromptBehavior is type boolean instead of string

java - 如何在java/jsp或javascript中读取扫描的pdf文件的内容

java - jscrollpane 不适用于 swing 应用程序中的 jtable

java - 如何在 JTabbedPane 中创建 JScrollPane?

java - android espresso 测试在文本匹配中总是失败

Java - 绘画时顶部插图未返回正确的值