我有以下问题:
我有包含图像的 JScrollPane。
滚动 Pane 与其他组件一起位于 JPanel 内部,以便能够使用 BorderLayout 布局整个内容(滚动 Pane 位于中心,我在南部有一些东西)。
此 JPanel 位于 JSplitPane 中。
JSplitPane 最终位于 JFrame 内。
JFrame
{
JSplitpane
{
JPanel(BorderLayout)
{
JScrollPane(CENTER)
{
BufferedImage
}
JPanel(SOUTH)
{...}
}
}
}
我现在的问题是,当我调整框架大小时,scrollPane 中的图像会很好地调整大小,直到达到图像大小。然后图像被拉伸(stretch),这是我想防止的。 我尝试将 JScrollPane 包装在使用 FlowLayout 进行布局的 JPanel 中。这对于调整大小来说效果很好,但是一旦我调整框架大小,滚动条就会消失。
我重写了scrollPane的setSize()方法,发现一旦调整框架大小,scrollPane的大小总是设置为图像的大小。但我不知道如何解决这个问题。
每一个提示都值得赞赏。
干杯,
本
最佳答案
我相信,如果您使用 BufferedImage
的宽度/高度在 JScrollPane
上调用 setMaximumSize()
,您应该会很好(但还没有没试过)。
作为一般性评论:仅仅为了添加子组件而重写 Swing 组件是一个坏主意。相反,创建一个 Controller 类来创建和组合基本组件。
<小时/>我重读了你的问题,想知道:问题是图像被拉伸(stretch),还是滚动条消失了?如果您想在没有任何内容可滚动的情况下将滚动条保留在屏幕上,请查看 setVerticalScrollBarPolicy()
和 setHorizontalScrollBarPolicy()
方法。
关于java - JScrollpane 滚动条调整大小问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2041299/