服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

[java]panel 嵌入scrollpane

  
不     为了将很多component放到一个带滚动条的窗口里,折腾了一天,有点无聊,不过动手能力但愿应该也在处理这种繁琐的细节问题中增强了:)
     scrollpane中只能放入一个组件,它的setlayout()方法也是虚设,一用就出错。如果要让很多组件(component)放到带滚动条窗口中就只能将这些组件先放到一个panel中,再把panel嵌入scrollpane,这里又有一个问题,如果panel的layout设为null那么滚动条将不会有用。我就是因为panel.setlayout(null)了而折腾了一天。最后我用setlayout(new gridlayout())才解决这个问题。以下是将panel嵌入scrollpane的代码(从我的程序里直接copy的基本没做修改):
    
   //这里初始化了四个组件数组 
   checkbox = new checkbox[numofitems];
    keyfield = new jtextfield[numofitems];
    chfield = new jtextfield[numofitems];
    enfield = new jtextfield[numofitems];
    
    scrollpane scrp = new scrollpane();
    panel panel = new panel(new gridlayout(numofitems,1));//将panel的layout设为numofitems行,每行1列。
       
    for(int i = 0;i < numofitems;i++)
    {
     checkbox[i] = new checkbox();
     keyfield[i] = new jtextfield(30);
     chfield[i] = new jtextfield(sp[i].str,30);
     enfield[i] = new jtextfield(30);
     
     panel pnl = new panel(new flowlayout(flowlayout.left));
     pnl.add(checkbox[i]);
     pnl.add(keyfield[i]);
     pnl.add(chfield[i]);
     pnl.add(enfield[i]);//将每一行的组件放入一个子panel中
     panel.add(pnl);//将子panel放入panel中
    }
    
    scrp.add(panel);//将panel嵌入scrollpane
    mycontainer.add(scrp);
    scrp.reshape(10,70,950,600);
    别看这个问题很小,却费了我一天工夫。写在这里但愿有用,也许哪天哪位兄弟姐妹会遇到和我同样的问题。还有java里面layout的问题很麻烦,不过懒得研究了,我对这个不是很感兴趣,只要解决了当前的问题就ok了.

扫描关注微信公众号