【问题标题】:JScrollpane scrollbar resizing issueJScrollpane 滚动条调整大小问题
【发布时间】:2011-01-03 17:17:13
【问题描述】:

我有以下问题:

我有一个包含图像的 JScrollPane。

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

此 JPanel 在 JSplitPane 中。

JSplitPane 终于在 JFrame 中了。

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

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

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

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

感谢每一个提示。

干杯,

【问题讨论】:

  • 我为奇怪的组件方案道歉。在预览中看起来更好......
  • 如何将图像添加到滚动窗格中...
  • 我对滚动窗格类进行了子类化,并在初始化期间加载了一个 BufferedImage,我通过调用 setViewportView() 将其添加到视口中
  • 看到了您的更新(顺便说一句,您应该在响应中添加 cmets 而不是添加新响应),此时我建议编写一个 SSCEP(小型、自包含的示例程序)来创建主框架/滚动窗格/缓冲图像,并使用此代码更新您的问题。

标签: java resize jscrollpane


【解决方案1】:

如果您使用BufferedImage 的宽度/高度在JScrollPane 上调用setMaximumSize(),我相信您应该会很好(但还没有尝试过)。

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


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

【讨论】:

  • 很抱歉使用了回答按钮。我是新手,大多数情况下,在你按下按钮之后,事情就变得有意义了……不管怎样,我解决了我的问题,当我写 SSCEP 时它就出现了。我弄乱了maximumSize和preferredSize,并设法在初始化后立即将maximumSize设置为首选大小,这导致了奇怪的行为。我现在有点聪明了,我猜...谢谢你的帮助。 -本
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-05-07
  • 2014-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-05
相关资源
最近更新 更多