您当前的位置:首页 > 互联网教程

java doLayout()方法,layoutContainer(),validate()分别

发布时间:2025-05-22 08:28:35    发布人:远客网络

java doLayout()方法,layoutContainer(),validate()分别

一、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);