2010-01-11 139 views
1

我有以下问题:JScrollpane滚动条调整大小问题

我有JScrollPane包含图像。

scrollpane在JPanel中与其他组件一起使用,以便能够使用BorderLayout(scrollpane是CENTER,我在南部有东西)布局整个事物。

此JPanel位于JSplitPane中。

JSplitPane终于在JFrame中。现在

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

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

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

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

每一个提示是赞赏。

干杯,

+0

我对这个奇怪的组件方案表示歉意。在预览中看起来更好... – Ben 2010-01-11 10:55:01

+0

如何将图像添加到滚动条中... – 2010-01-11 12:05:43

+0

我将子类scrollpane类和初始化期间加载了一个BufferedImage,我通过调用setViewportView()添加到视口中 – Ben 2010-01-11 14:12:08

回答

0

我相信,如果你打电话setMaximumSize()JScrollPaneBufferedImage的宽度/高度(但还没有尝试过),你应该是好的。

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


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

+0

对不起,使用答案按钮。我是新来的,大部分时间,在你按下按钮之后,有些东西是有意义的...... 无论如何,我解决了我的问题,当我编写SSCEP时,我看到了这个问题。我混淆了maximumSize和preferredSize,并以某种方式设法将maximumSize始终设置为在导致奇怪行为的初始化之后的首选大小。 我现在有点聪明了,我猜... 感谢您的帮助。 本-B – Ben 2010-01-15 13:01:06