JScrollPane不滚动显示整个pannel

时间:2015-07-27 10:06:57

标签: java swing jpanel jscrollpane jscrollbar

我开发了一个显示面板和代码的代码。添加了一个滚动窗格,如果面板大小超过可见区域,它将向下滚动。

我的代码是

    CT3= new CT3TycoDULocalPanel(anexflag1,anexflag2);

    cnt =(JPanel)getContentPane ();
    cnt.setLayout (null);

    pane = new JPanel(new BorderLayout());
    pane.add (CT3,BorderLayout.CENTER);

    scPane = new JScrollPane(CT3); 
    scPane.setLayout(null);
    scPane.setBackground(Color.GREEN);
    scPane.setBounds(20,12,550,600);

    scp=scPane.getVerticalScrollBar();
    scp.setBounds (528,0,20,600);
    scp.addAdjustmentListener (this);

    scPane.setViewportView(CT3);
    scPane.add(scp);
    scPane.addMouseWheelListener(this);
    scPane.add(CT3);
    CT3.setBounds(10, 10, 510,CT3.y);
    scPane.validate();
    scPane.repaint();

    cnt.add(scPane);

在AdjustmentListener中,我编写了以下代码:

public void adjustmentValueChanged(AdjustmentEvent e) 
{
    int y = (int)(e.getValue()*3.2);
    CT3.reshape (10,(int)-Math.ceil(y)+25,510,CT3.y);
    CT3.validate();
    CT3.repaint();
}

我按照以下代码动态计算了CT3的大小

public void resize()
{
    if(itemVect.size()<=17)
    {
        pnlAnex.setBounds(0, 50, 510, 700);
    }
    else
    {
        int size=itemVect.size();
        y=(size*30)+90;
        pnlAnex.setBounds(0, 50, 510, y+50);
        pnlAnex.validate();
        pnlAnex.repaint();

    }
 }

但我没有得到所需的输出。 CT3面板显示正确的高度,但滚动窗格的高度越来越高,如下图所示。 Scrollpane

绿色部分是ScrollPane&amp;白色部分是我想要的输出。

正如您所看到的,即使我所需的输出(白色面板)被显示,我的滚动条仍然可以滚动。

请帮我限制滚动条,直到我的白色面板仅可见(CT3面板)

提前致谢......

0 个答案:

没有答案