我开发了一个显示面板和代码的代码。添加了一个滚动窗格,如果面板大小超过可见区域,它将向下滚动。
我的代码是
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&amp;白色部分是我想要的输出。
正如您所看到的,即使我所需的输出(白色面板)被显示,我的滚动条仍然可以滚动。
请帮我限制滚动条,直到我的白色面板仅可见(CT3面板)
提前致谢......