java doLayout()方法,layoutContainer(),validate()分别
发布时间:2025-05-22 08:28:35 发布人:远客网络
一、java doLayout()方法,layoutContainer(),validate()分别
1、layoutContainer是最重要的方法,因为组件的最终布局都是在该方法中实现的。这个方法会被awt-swing框架自动调用,例如改变组件的字体、容器尺寸改变等都会引起该方法的调用。
2、JDK源代码中java.awt.Container的doLayout实现如下:
LayoutManager layoutMgr= this.layoutMgr;
layoutMgr.layoutContainer(this);
可见doLayout方法是直接调用布局管理器的layoutContainer方法。调用容器的doLayout可以强制实现容器的重新布局。
3、java.awt.Container的validate方法实现代码:
/* Avoid grabbing lock unless really necessary.*/
if(peer instanceof ContainerPeer){
注意“ validateTree();”方法,再给出 validateTree()方法实现:
protected void validateTree(){
if(peer instanceof ContainerPeer){
((ContainerPeer)peer).beginLayout();
Component component[]= this.component;
for(int i= 0; i< ncomponents;++i){
Component comp= component[i];
if((comp instanceof Container)
((Container)comp).validateTree();
if(peer instanceof ContainerPeer){
((ContainerPeer)peer).endLayout();
可以看出在validateTree方法执行过程中调用了“doLayout();”方法。也就是说调用了LayoutManager接口的void layoutContainer(Container parent)方法。也是强制实现容器的重新布局。
记住,读源码是学习开源技术最彻底的方法
二、java关于JLayeredPane
1、public Component add(Component comp,
2、 int index)将指定组件添加到此容器的给定位置上。这是一个适用于 addImpl(java.awt.Component, java.lang.Object, int)的便捷方法。
3、注:如果已经将某个组件添加到显示的容器中,则必须在此容器上调用 validate,以显示新的组件。如果添加多个组件,那么可以在添加所有组件之后,通过只调用一次 validate来提高效率。
4、index-插入组件的位置,-1表示将组件追加到尾部
5、NullPointerException-如果 comp为 null
6、IllegalArgumentException-如果 index无效(有关细节请参阅 addImpl(java.awt.Component, java.lang.Object, int))
三、Java中有哪些中间组件
1、javax.swing包中JComponent(轻组件)类是java.awt包中Container类的一个直接子类、Componenet类的一个间接子类。javax.swing包中的JFame类和JDialog类分别是java.awt包中类和Dialog类的直接子类、Window类的间接子类。
2、组件(component):Java把由Component类的子类或间接子类创建的对象称为一个组件,是图形用户界面中的可见部分,如按钮、标签.
3、容器(container): Java把由Container的子类或间接子类创建的对象称为一个容器,是图形用户界面中容纳其它组件的部分,如窗体。
4、removeAll():移掉容器中的全部组件。
5、remove(Component c)移掉容器中参数指定的组件。
6、validate():每当容器添加新的组件或移掉组件时,调用该方法以保证容器中的组件能正确显示出来。
7、public void setBounds(int a,int b,int width,int height)调用该方法可以设置出现在屏幕上时的初始位置是(a,b),即距屏幕左面a个像素、距屏幕上方b个像素;窗口的宽是width,高是height。
8、public void setSize(int width,int height):设置窗口的大小,窗口在屏幕出现是默认位置是(0,0)。
9、public void setVisible(boolean b):设置窗口是可见还是不可见,窗口默认是不可见的。
10、public void setResizable(boolean b):设置窗口是否可调整大小,窗口默认是可调整大小的。
11、public void setDefaultCloseOperation(int operation):设置单击窗体右上角的关闭图标后,程序会做出怎样的处理。
12、用来建立文本框的,用户可以在文本框输入单行的文本。
13、 JTextField(int x):创建文本框对象,可以在文本框中输入若干个字符,文本框的可见字符个数由参数x指定。
14、 JTextField(String s):创建文本框对象,则文本框的初始字符串为s,可以在文本框中输入若干个字符。
15、 public void setText(String s):设置文本框中的文本为参数s指定的文本。
16、 public String getText():获取文本框中的文本。
17、 public void setEditable(boolean b):指定文本框的可编辑性(默认为可编辑的)。
18、 public void setHorizontalAlignment(int alignment):设文本在文本框中的对齐方式,其中alignment的有效值确定对齐方式,如:LEFT、CENTER、RIGHT。
19、JTextArea类用来建立文本区,用户可以在文本区输入多行的文本。
20、 JTextArea(int rows, int columns):构造一个可见行和可见列分别是rows、columns的文本区。
21、 setLineWrap(boolean b):决定输入的文本能否在文本区的右边界自动换行。
22、 setWrapStyleWord(boolean b):决定是以单词为界(b取true时)或以字符为界(b取false时)进行换行。
23、 getText():获取文本区的文本。
24、 setText(String s):设置文本内容。
25、 append(String s):尾部加文本。
26、 insert(String s,int x):在文本区的指定位置处插入文本。
27、 public void copy():拷贝选定的区域。
28、 public void cut():剪切选定的区域。
29、 public void paste():在指定的区域粘贴。
30、用户可以在下拉列表看到第一个选项和它旁边的箭头按钮。
31、当用户单击箭头按钮时,选项列表打开。
32、 public JComboBox()创建一个没有选项下拉列表。
33、 public void addItem(Object anObject)增加选项。
34、 public int getSelectedIndex()返回当前下拉列表中被选中的选项的索引,索引的起始值是0。
35、 public Object getSelectedItem()返回当前下拉列表中被选中的选项。
36、 public void removeItemAt(int anIndex)从下拉列表的选项中删除索引值是anIndex选项。
37、 public void removeAllItems()删除全部选项。
38、 public void addItemListener(ItemListener)向下拉列表增加ItemEvent事件的监视器。
39、对于下拉式列表事件源,可以发生ItemEvent事件。
40、使用JTable可以创建一个表格对象。
41、 JTable(Object[ ][ ] data, Object[ ] columnName)
42、表格的视图将以行和列的形式显示数组data每个单元中对象的字符串表示。
43、参数columnName用来指定表格的列名。
44、用户在表格单元中输入的数据都被认为是一个Object对象。
45、用户通过表格视图对表格单元中的数据进行编辑,以达到修改二维数组data中对应的数据。
46、 Object[][] a= new Object[3][4];
47、 Object[] name={"商品名称","单价","销售量","销售额"};
48、 JTable table=new JTable(a,name);