[JAVA]Panel 嵌入ScrollPane

王朝java/jsp·作者佚名  2006-01-09
宽屏版  字体: |||超大  

不 为了将很多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了.

重要参考资料:http://www.chinalinuxpub.com/doc/oreillybookself/java/awt/ch11_04.htm

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有