1

我有以下问题:

我有包含图像的 JScrollPane。

滚动窗格与其他组件一起位于 JPanel 内部,以便能够使用 BorderLayout 布局整个事物(滚动窗格是 CENTER,我在 SOUTH 有一些东西)。

此 JPanel 位于 JSplitPane 中。

JSplitPane 最终位于 JFrame 中。

JFrame
{
 JSplitpane
 {
  JPanel(BorderLayout)
  {
   JScrollPane(CENTER)
   {
    BufferedImage
   }

   JPanel(SOUTH)
   {...}
  }
 }
}

我现在的问题是,当我调整框架大小时,scrollPane 中的图像会调整大小,直到达到图像大小。然后图像被拉伸,我想阻止它。我尝试将 JScrollPane 包装在带有 FlowLayout 布局的 JPanel 中。这适用于调整大小位,但一旦我调整框架大小,滚动条就会消失。

我覆盖了 scrollPane 的 setSize() 方法,发现一旦调整框架的大小,滚动窗格的大小总是设置为图像的大小。我不知道如何解决这个问题。

每一个提示都值得赞赏。

干杯,

4

1 回答 1

0

我相信如果您使用 的宽度/高度调用(但尚未尝试),您应该setMaximumSize()JScrollPane很好BufferedImage

作为一般评论:重写 Swing 组件只是为了添加子级是一个坏主意。相反,创建一个控制器类来创建和组合基本组件。


我重读了您的问题,并且想知道:图像被拉伸还是滚动条消失的问题?如果您想在屏幕上没有滚动条的情况下仍保留滚动条,请查看setVerticalScrollBarPolicy()andsetHorizontalScrollBarPolicy()方法。

于 2010-01-11T14:50:21.503 回答