Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java jScrollPane滚动在jPanel调整大小后消失_Java_Swing_User Interface_Jscrollpane_Netbeans 7 - Fatal编程技术网

Java jScrollPane滚动在jPanel调整大小后消失

Java jScrollPane滚动在jPanel调整大小后消失,java,swing,user-interface,jscrollpane,netbeans-7,Java,Swing,User Interface,Jscrollpane,Netbeans 7,我目前正在使用NetbeansIDE 7.4编写Java GUI应用程序,遇到以下问题: 我有一个封闭在初始尺寸为300160的jScrollPane中的jPannel 每次在运行时单击jButton时,我都会按如下方式调整jPannel的大小: jPanel3.setPreferredSize(new Dimension(300, (count + 3) * 30)); jPanel3.repaint(); 如果count变量大于3,则每次我调整垂直滚动条的大小时,它都会适应jPannel

我目前正在使用NetbeansIDE 7.4编写Java GUI应用程序,遇到以下问题:

我有一个封闭在初始尺寸为300160的jScrollPane中的jPannel 每次在运行时单击jButton时,我都会按如下方式调整jPannel的大小:

jPanel3.setPreferredSize(new Dimension(300, (count + 3) * 30));
jPanel3.repaint();
如果count变量大于3,则每次我调整垂直滚动条的大小时,它都会适应jPannel

但是如果count小于3,垂直滚动条将消失,当我再次调整jPannel的大小时(比如count=10),滚动条将不再显示

这正常吗?我怎样才能修好它

这正常吗?我怎样才能修好它

不知道这是否正常,但这不是调整面板大小的正确方法。Swing组件负责确定其大小,而不是您的应用程序代码。当您想要更改组件的属性时,可以通过创建setter方法来实现

如果要动态更改面板的大小,则应覆盖自定义面板的
getPreferredSize()
方法。比如:

@Override
public Dimentsion getPreferredSize()
{
    return new Dimension( new Dimension(300, (getCount() + 3) * 30) );
}
然后在类中,您应该为计数创建一个setter(和getter)方法:

public void setCount(int count)
{
    this.count = count;
    revalidate()
    repaint();
}

现在,重新验证将导致重新计算首选大小,然后滚动窗格将使用新的首选大小。

如果这是我的问题,我正在这里寻求帮助,我会花一点时间来创建和发布一个,因为我知道这是让人们充分理解我的问题并帮助我的最好、最快的方法。也许对你也有帮助。