Java JScrollPane滚动条:根据JPanel';s级变焦

Java JScrollPane滚动条:根据JPanel';s级变焦,java,resize,jpanel,jscrollpane,Java,Resize,Jpanel,Jscrollpane,我有一个JScrollPane连接到一个JPanel,所有这些都包含在一个JFrame中。我还有一个自定义的slider类,它扩展了JSlider。它也包含在JFrame中。我的问题是,当JSlider在我的面板中放大图像时,我的JScrollPane没有随着图像的缩放而调整大小。我尝试了一切,从重置JScrollPane上的边界到手动调整滚动条,再到重置首选大小。我在其他stackoverflow问题上所看到的一切似乎都不适合我。下面是我的一些代码,我在其中添加了当前的滚动窗格(没有一些多余的

我有一个JScrollPane连接到一个JPanel,所有这些都包含在一个JFrame中。我还有一个自定义的slider类,它扩展了JSlider。它也包含在JFrame中。我的问题是,当JSlider在我的面板中放大图像时,我的JScrollPane没有随着图像的缩放而调整大小。我尝试了一切,从重置JScrollPane上的边界到手动调整滚动条,再到重置首选大小。我在其他stackoverflow问题上所看到的一切似乎都不适合我。下面是我的一些代码,我在其中添加了当前的滚动窗格(没有一些多余的细节):

这是当前在ImageSlider中用于面板缩放的代码。我的大多数重新调整滚动条的尝试都发生在这里:

 @Override
public void stateChanged(ChangeEvent arg0) {
    int value = ((JSlider) arg0.getSource()).getValue();
    SCALE = value / 100.0; //Scaling factor
    ACTIVE_FRAME.revalidateViewport(); //Method within the frame class. See below
}
重新验证视口函数:

public void revalidateViewport() {
    scroll.getViewport().revalidate();
    scroll.getViewport().repaint();
}
如何根据比例因子调整滚动条的大小?有什么我还没见过的简单方法吗?我是JScrollPanes的新手


多谢各位。如果您有任何问题,请告诉我。

JScrollPane的视图(其视口的子视图)是否覆盖了
getPreferredSize
方法?若并没有,重新验证可能并没有任何效果。让我害怕的是,你们似乎在使用
静态
引用代码的各个方面,
静态
并不是一种跨对象的通信机制,你们应该试着在并没有它的情况下生活(为此目的)。如果没有一个可运行的例子来说明你的问题,任何人都无能为力you@VGR不,没有。“我应该继续做一个吗?”很遗憾,我不能发布我的全部代码。现在大概有9节课,版权归我公司所有。以上示例已做了充分修改,因此不会违反公司政策。因此,我不能给出比上述更多的东西。但是我可以回答你的任何问题。是的。执行布局时,JScrollPane的视口将为组件提供其首选大小。显然,首选大小需要基于图像的大小。
public void revalidateViewport() {
    scroll.getViewport().revalidate();
    scroll.getViewport().repaint();
}