2024年10月flowlayout是什么意思(java FlowLayout里面的参数是什么意思那参数和整体布局到底有什么对应关系)

 更新时间:2024-10-10 16:57:52

  ⑴flowlayout是什么意思(javaFlowLayout里面的参数是什么意思那参数和整体布局到底有什么对应关系

  ⑵javaFlowLayout里面的参数是什么意思那参数和整体布局到底有什么对应关系

  ⑶单参数是对齐方式。应该传入FlowLayout定义的常量,而不是一个数字,因为这样不是一目了然

  ⑷setLayout(newFlowLayout)是什么意思

  ⑸电脑出现提示:setLayout(newFlowLayout)是由于系统关键文件被误删或驱动未安装后出现的提示,这里可以进行系统重装的方法来解决,具体的步骤如下:

  ⑹下载并且安装好大白菜装机版,打开安装好的大白菜装机版,插入u盘等待软件成功读取到u盘之后,点击“一键制作启动u盘”进入下一步操作。如下图所示

  ⑺在弹出的信息提示窗口中,点击“确定”进入下一步操作。如下图所示

  ⑻,耐心等待大白菜装机版u盘制作工具对u盘写入大白菜相关数据的过程。如下图所示

  ⑼完成写入之后,在弹出的信息提示窗口中,点击“是(Y”进入模拟电脑。如下图所示

  ⑽模拟电脑成功启动说明大白菜u盘启动盘已经制作成功,按住Ctrl+Alt释放鼠标,点击关闭窗口完成操作。如下图所示

  ⑾java代码求解释,Flowlayout(,,参数是什么意思

  ⑿为居中,,为水平和垂直间隙(建议你看看javaapi文档FlowLayout(intalign,inthgap,intvgap)创建一个新的流布局管理器,具有指定的对齐方式以及指定的水平和垂直间隙。对齐方式常量java.awt.FlowLayoutpublicstaticfinalintCENTERpublicstaticfinalintLEADINGpublicstaticfinalintLEFTpublicstaticfinalintRIGHTpublicstaticfinalintTRAILING

  ⒀verticalflowlayout是什么意思

  ⒁沙发给我年看我会不会学到圣~~~——(有答案了也选我啊~

  ⒂setLayout(newFlowLayout)是什么意思

  ⒃将面板的布局设置为FlowLayout,面板上增加的组件默认是按照从左到右顺序排列

  ⒄什么是容器的布局,试列举并简述java中常用的几种布局策略

  ⒅容器的布局是指对添加的各个组件进行有序的、统一的对位置进行编排,使其更加美观。

  ⒆JavaFX典型的布局策略:

  ⒇它采用的布局策略是:按照控件的添加次序按个摆放,按照从上到下、从左到右的次序摆放。当窗口的大小发生变化后,场景的大小也自动跟着变化,面板的大小也跟着变化,并且会重新计算各个控件的位置,重新摆放各个控件的位置。

  ⒈GridPane面板

  ⒉它采用的布局策略是:将整个面板划分为若干个格子,每个格子的大小是一样的,每个格子中可以放置一个控件,类似于表格的方式。

  ⒊BorderPane面板

  ⒋它采用的布局策略是:将整个面板划分五个区域,分别是上、下、左、右、中,每个区域可以放置一个控件。

  ⒌HBox是将所有的控件放在同一行,无论有多少个控件都是放在同一行。

  ⒍VBox的布局策略与HBox类似,不过VBox是将所有的控件放在同一列。

  ⒎容器没有布置它自己构件的功能,而把这个责任授权给一个布局管理器。

  ⒏顺序布局是最基本的一种布局,面板的默认布局就是顺序布局。顺序布局指的是把图形元件一个接一个地放在面板上。

  ⒐边界布局包括个区:北区、南区、东区、西区和中区。这个区在面板上的分布规律是“上北下南,左西右东”。

  ⒑参考资料:百度百科-java软件开发

  ⒒FlowLayout,BorderLayout,GridLayout,CardLayout,GridBagLayout,null,BoxLayout布局的特点各是什么

  ⒓FlowLayout:流布局用于安排有向流中的组件,这非常类似于段落中的文本行。流布局一般用来安排面板中的按钮。它使得按钮呈水平放置,直到同一条线上再也没有适合的按钮。线的对齐方式由align属性确定。可能的值为:LEFT-此值指示每一行组件都应该是左对齐的RIGHT-此值指示每一行组件都应该是右对齐的CENTER-此值指示每一行组件都应该是居中的LEADING-此值指示每一行组件都应该与容器方向的开始边对齐TRAILING-此值指示每行组件都应该与容器方向的结束边对齐BorderLayout:这是一个布置容器的边框布局,它可以对容器组件进行安排,并调整其大小,使其符合下列五个区域:北、南、东、西、中。每个区域最多只能包含一个组件,并通过相应的常量进行标识:NORTH、SOUTH、EAST、WEST、CENTER。CardLayout:它将容器中的每个组件看作一张卡片。一次只能看到一张卡片,容器则充当卡片的堆栈。当容器第一次显示时,第一个添加到CardLayout对象的组件为可见组件。卡片的顺序由组件对象本身在容器内部的顺序决定。GridBagLayout:它是一个灵活的布局管理器,它不要求组件的大小相同便可以将组件垂直、水平或沿它们的基线对齐。每个GridBagLayout对象维持一个动态的矩形单元网格,每个组件占用一个或多个这样的单元,该单元被称为显示区域。null:当布局设置为null时,可使用java.awt.Window提供的publicvoidsetBounds(intx,inty,intwidth,intheight)移动组件并调整其大小。由x和y指定左上角的新位置,由width和height指定新的大小。如果width值或height值小于之前调用setMinimumSize指定的最小大小,则它的值将自动增加。覆盖:类ponent中的setBounds参数:x-组件的新x坐标y-组件的新y坐标width-组件的新widthheight-组件的新heightBoxLayout:允许垂直或水平布置多个组件的布局管理器。这些组件将不包装,因此举例来说,垂直排列的组件在重新调整框架的大小时仍然被垂直排列。建议你可以多翻一下java帮助!

  ⒔java中VerticalFlowLayout这个类是什么意思,如何使用,求解

  ⒕垂直排列的布局器,想想繁体字那种你J好ava从上到下,就是这样的布局。

  ⒖verticalflowlayout是什么意思呀

  ⒗java的界面布局,将窗体划分为下列显示方式*************************************************

  ⒘简述java程序设计中界面设计中的三种布局方式

  ⒙边框布局JPanelpanel=(JPanel)getContentPane();panel.setLayout(newFlowLayout());凭着我们现在所积累的阅读程序的功夫,应该能够很快地知道我们通过第一条语句创建了一个容器JPanel类的panel。而接下来,我们则调用了panel.setLayout(newFlowLayout()),在上一章中,我们一直没有对它进行相应的分析。现在该是揭开它的面纱的时候了。单词layout的中文意思是“布局”、“布置”,setLayout就是设置布局格式。也就是说,容器panel的方法setLayout是用来设置布局格式的。那么,我们一直用的是什么模式呢?对,就是后面括号里的FlowLayout(。顾名思义,也就是流布局方式。这是一种顺其自然的方式:从左到右,一个个对象地摆放,摆不下,就摆到下一行。所以,我们就无法去控制它。从本章开始,我们就要学习一种控制布局的方法。在Java语言中,提供了各种布局管理器,以便大家能够达到这一目的。通常我们最常使用的布局管理器是:BorderLayout(边框布局管理器,如下图所示,边框布局管理器将一个屏幕分成了五个部分:东、南、西、北、中。如果要使用这种边框布局管理进行布局控制,我们必须先将“容器”设置为“边框布局控制模式”,具体来说,就是当调用setLayout方法为容器设置布局控制模式时,参数设置为BorderLayout。例如:JPanelpanel=(JPanel)getContentPane();panel.setLayout(newBorderLayout());然后,我们就可以在使用容器的add方法添加部件时,附加上位置参数,使得该部件显示在指定的位置上。位置参数分别是:BorderLayout.NORTH位置为北BorderLayout.SOUTH位置为南BorderLayout.EAST位置为东BorderLayout.WEST位置为西BorderLayout.NORTH位置为中心实例说明下面,我们就来试一试,使用按钮排出五个方向!请创建一个testBorder.java,输入以下源程序:源程序:useTextArea.javaimportjava.awt.*;importjavax.swing.*;importjava.applet.Applet;publilasstestBorderextendsJApplet{publicvoidinit(){JPanelpanel=(JPanel)getContentPane();panel.setLayout(newBorderLayout());JButtonnorth=newJButton(“North“);JButtonsouth=newJButton(“South“);JButtoneast=newJButton(“East“);JButtonwest=newJButton(“West“);JButtoncenter=newJButton(“Center“);panel.add(north,BorderLayout.NORTH);panel.add(south,BorderLayout.SOUTH);panel.add(east,BorderLayout.EAST);panel.add(west,BorderLayout.WEST);panel.add(center,BorderLayout.CENTER);}}然后,我们使用javac编译这个程序,然后一个显示这个JavaApplet的HTML页面。最后调用appletviewer来观察这个页面为了试一下,如果并没有在每个位置都安排一个部件,那么会怎么样呢?我们修改一下程序,将panel.add(west,BorderLayout.WEST);这一行注释掉(就是在前面加上“//”号,也就是不显示西边的按钮,看一下结果如何。正如上图(图-所示,西边由于没有部件,因此“中”就朝西靠,“占领”了它的位置。而如果我们修改一下程序,让中间的按钮不显示的话,就会出现如图-的样子,中间的区域并未并占领,而是空在那里了!这是与其它位置不同的地方,大家一定要记住。一些提示:其实这很好理解,如果中间的那一块的位置被其它位置上的部件占领的话,就会使得分不清“东”、“南”、“西”、“北”了。倒成了“左上角”、“左下角”、“右上角”、“右下角”了。网格布局实例说明下面,我们来看一个新的程序!首先创建一个testGrid.java文件,并输入以下源程序:源程序:testGrid.javaimportjava.awt.*;importjavax.swing.*;importjava.applet.Applet;publilasstestGridextendsJApplet{StringbuttonLabels={“No.“,“No.“,“No.“,“No.“,“No.“,“No.“,“No.“,“No.“,“No.“};publicvoidinit(){JPanelpanel=(JPanel)getContentPane();panel.setLayout(newGridLayout(,));for(intx=;xpanel.add(newJButton(buttonLabels));}}然后,我们使用javac编译这个程序,然后一个显示这个JavaApplet的HTML页面。最后调用appletviewer来观察这个页面我们主要是关心如何摆放各个部件,而不是如何构建一个程序。所以,正如本例中的按钮一下,这一章中的所有部件都是一个样子,没有任何作用。这样也使得程序尽可能地变短了,更易于大家阅读和理解程序。下面,我们就一起来看一下上面的这个程序。StringbuttonLabels={“No.“,“No.“,“No.“,“No.“,“No.“,“No.“,“No.“,“No.“,“No.“}我想大家都能很轻松地读懂这条语句,我们在此定义了一个字符串数组buttonLabels,它有个字符串成员,也就是我们后面定义的个按钮的标签文本。值得注意的是,大家一定要知道,buttonLabels。这对更好地理解后面的程序十分重要,也是基本功之一。JPanelpanel=(JPanel)getContentPane();panel.setLayout(newGridLayout(,));在这两行程序中,我们首先定义了一个容器部件panel。然后调用setLayout方法设置布局管理器。这里我们使用了一个新的布局管理器:GridLayout,网格布局管理器。我们注意到GridLayout的后面带了两个参数:,。这有什么用呢?我们一起来看一下GridLayout方法的定义:publicGridLayout(introws,intcols)我们看一下这两个参数,首先它们都是int型—整型的。那么它们分别起到什么作用呢?我们还是采用顾名思义法吧!row的中文意思是行,col的中文意思是列,后面加上一个s,是这两个单词的复数形式。好,我们现在串起来想一下,我们定义了一个网格布局,然后定了它的行、列数!这不就画出了这个网格了吗?如果我们在语句是使用GridLayout(,)的话,就会把整个容器分成个单元而我们在程序中使用的是GridLayout(,),所以它就将整个容器分成了注意:这种划分是一种逻辑上的,暗藏式的划分,而不会把格子给划出来。另外,我们这里举的两个例子行、列都相等,其实完全可以不等。for(intx=;xpanel.add(newJButton(buttonLabels));这是一个循环结构的程序。我们先看循环语句,循环的初值是“x=”,继续执行循环的条件语句是“xbuttonLabels.length就是用来请得字符串数组buttonLabels的长度!也就是这个字符串数组中有多少个字符串?我们知道,我们在该数组中定义了个。从程序中,我们可以获知,当x=buttonLabels.length时,循环就将结束,应为它不满足条件x别忘了,我们使用buttonLabels嘛。在循环中,我们使用容器提供的add方法,将新定义的按钮部件添加进去。有时,我们可能想获得象下图所示的布局效果!让各个部件之间存在一些间隙。使用Java的网格布局可以实现吗?我很高兴地回答你:“可以!”,我们可以使用GridLayout的另一种构造器方法(签名不同来实现:publicGridLayout(introws,intcols,inthgap,intvgap)在这个方法中,可以带上四个整型参数,前两个我们已经很熟悉了,行数与列数。后面则是两个新的参数。第一个是hgap,其中gap的意思是间隙、空隙的意思,而h则是horizontal(水平的第一个字母。也就是说,我们可以通过hgap参数设置横向的间隙。第二个是vgap,v则是vertical(垂直的第一个字母。也就是说,我们可以通过vgap参数设置纵向的间隙。自测练习_________________是网格布局管理器。a.BorderLayoutb.GridLayoutc.ReseauLayoutd.FlowLayout利用以下代码回答问题、、、:这个布局中有__________行?a.行b.行c.行d.行这个布局中有__________列?a.行b.行c.行d.行这个布局将容器分为_________个部分?a.个b.个c.个d.个第个部件位于__________位置。a.左上角b.左下角c.右上角d.右下角e.中间根据以下界面,编写一个程序图-练习题图____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________如果我们构建一个*的网格布局,但只在该容器中加入个按钮,将会出现什么情况?请编写一个程序,来试一试效果。________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________练习答案b没什么好解释的,请大家记住!a第一个参数是行数,因此是行。b第二个参数是列数,因此为列。b行列,其*,个部分嘛。c第个部件是第一行的最后一个,当然在右上角嘛。下面是一个实现的程序实例:源程序:lianxi_.javaimportjava.awt.*;importjavax.swing.*;importjava.applet.Applet;publilasslianxi_extendsJApplet{StringbuttonLabels={““,““,““,““,““,““,““,““,““,“*“,““,“#“};publicvoidinit(){JPanelpanel=(JPanel)getContentPane();panel.setLayout(newGridLayout(,,,));for(intx=;xpanel.add(newJButton(buttonLabels));}}下面是一个实现的程序实例:源程序:lianxi_.javaimportjava.awt.*;importjavax.swing.*;importjava.applet.Applet;publilasslianxi_extendsJApplet{StringbuttonLabels={“No.“,“No.“,“No.“,“No.“,“No.“,“No.“,“No.“,“No.“,“No.“,“No.“,“No.“,“No.“,“No.“,“No.“,“No.“,“No.“,“No.“};publicvoidinit(){JPanelpanel=(JPanel)getContentPane();panel.setLayout(newGridLayout(,));for(intx=;xpanel.add(newJButton(buttonLabels));}}这个程序使用javac编译完后,编写一个包含这个类的HTML页面,再用appletviewer来观察发现运行结果如下图所示:图-练习答案图这个输出是不是令你感到十分意外,整个程序根本不按要求分成列,所以我们从这里得到一个使用网格布局中要十二分注意的一点:“请别忘了将网格填满”。否则程序的输出将不可预料。一些提示:如果你真的没有那么多东西来“占领”网格的话,我建议你使用一个空标签来填补这个空白的网格,使得程序的输出如你所愿。使用空标签的方法很容易:panel.add(newLabel(“”));从这里,我们也看出了,我们学习过的流布局管理器、边框布局管理器,以及我们刚学习过的网格布局管理器都比较死板,不够高级。.组合布局传授新知正如我们在上一小节结束的时候说的一样,各种布局管理器都有自己的缺点,没有一种能够真正地完全满足我们编写GUI程序时的要求。而在Java语言中,允许在容器中加入其他容器,这样每个容器可以根据自己的需要采用不同的布局管理器,组合成为一个我们所需要的GUI程序界面。这种方法,我们就称之为组合布局。注意:与流布局、边框布局、网格布局不同,组合布局并不是一个新的布局管理器,它是通过结合各种布局管理器的优点,将它们组合地应用在GUI程序界面的开发中。这是一种布局管理的方法。也可以说是一种GUI程序界面的开发技巧。当我们设计GUI程序界面时,最好先在纸上把它画出来,然后“分块解决”。也就是将能够组合在一起的部件找出来,将它们放在一个容器里,并为它们选择合适的布局管理器。然后把这些容器摆放在一起,就解决了。设计时还要考虑到窗体大小发生改变的时候,引起的部件形体变化。这方面,请你熟记几个设计技巧:对于那些要求扁平状的部件,我们应该将它放置在边框布局中的南面或北面;对于那些要求细高状的部件,我们应该将它放置在边框布局中的东面或西面;对于那些可以随着窗体改变大小部分,我们可以将它放置在边框布局的中间;如果我们要求部件保持大小相同,那么,我们就应该采用网格布局。下面,我们就通过几个实际的例子,来让大家领会和掌握这种设计的思路与方法。实例说明我们首先创建一个testbination.java文件,然后输入以下源程序:源程序:testbination.javaimportjava.awt.*;importjavax.swing.*;importjava.applet.Applet;publilasstestbinationextendsJApplet{publicvoidinit(){Frameframe=newFrame(“testbination“);frame.setLayout(newBorderLayout());TextAreatext=newTextArea();frame.add(text,BorderLayout.CENTER);JPanelpanel=(JPanel)getContentPane();panel.setLayout(newGridLayout(,,,));panel.add(newJButton(“A“));panel.add(newJButton(“B“));panel.add(newJButton(“C“));frame.add(panel,BorderLayout.SOUTH);frame.pack();frame.show();}}然后,我们使用javac编译这个程序,然后一个显示这个JavaApplet的HTML页面。最后调用appletviewer来观察这个页面,如下图所示:图-程序testbination.java的输出正如上图所示,程序的输出与以前不同,各个部件不是显示在Appletviewer程序框中,而是显示在另一个窗口中。这是怎么回事呢?下面我们就一起来看一下这个程序!传授新知在以前的程序中,我们一直都是使用容器JPanel,面板。而我们在这个程序中引进了一个新的容器Frame。使用了这个容器后,就会新创建一个窗口。这也就是为什么程序的输出有这么大的变化的原因。Frameframe=newFrame(“testbination“);这条语句,定义了一个Frame容器frame,然后使用new操作符调用构造器方法,后面带的参数“testbination”则是这个Frame的标题。一些提示:其实大家能Frame所体现出来的效果是很熟悉的,它等价于Windows中的窗体。而Frame的标题就是窗体的标题。frame.setLayout(newBorderLayout());与JPanel容器一样,我们可以调用setLayout方法来设置Frame的布局管理器。在这里,我们将Frame容器frame的布局管理器设置成为边框布局管理器(也就是我们在.小节中学习过的布局管理器。frame.add(text,BorderLayout.CENTER);紧接着,我们调用frame的add方法,将文本区部件text添加到frame容器中来。注意我们设置了它的位置:BorderLayout.CENTER。这是因为,我们希望这个文本区能够随着窗体的大小变化而变化。所以适合将其放在在中间位置。panel.setLayout(newGridLayout(,,,));我们又定义了一个JPanel容器panel,并将其的布局管理器设置为网格布局管理器。并通过指定参数,使得整个panel被分成行列,水平空隙为的网格。frame.add(panel,BorderLayout.SOUTH);这是组合布局方法最重要的一步,我们将panel这个容器,加入到了frame这个容器中去了。并且指定了panel这个容器在整个frame中所占的位置:BorderLayout.SOUTH,也就是下边。这样,panel中包含的三个按钮就会永远(不管窗体大小如何改变呆在文本区的下边,而且三个按钮的大小会根据窗体大小的改变而改变。一些提示:这是因为,panel中的按钮是用网格布局的。frame.pack();frame.show();与JPanel不一样,使用Frame容器,不能够直接显示了出来。我们必须调用Frame容器的show方法才能使得Frame显示出来。而在使用show方法之前,我们还需要使用pack方法将Frame中的内容做一个整合。请记住这里的使用方法。GridBag布局实例说明到现在为止,我们已经学习了边框布局、网格布局以及组合布局,现在大家试一试编写一个程序,怎么样,挺有难度的吧!完成这个GUI得花很多心思去设计组合,十分讨厌,下面我们就使用一个新的布局管理器GridBagLayout来解决这种难题。首先,输入以下源程序:源程序:testGridBag.javaimportjava.awt.*;importjavax.swing.*;importjava.applet.Applet;publilasstestGridBagextendsJApplet{publicvoidinit(){JPanelpanel=(JPanel)getContentPane();panel.setLayout(newGridBagLayout());GridBagConstraintsgbdc=newGridBagConstraints();gbdc.fill=GridBagConstraints.BOTH;gbdc.weightx=;gbdc.weighty=;panel.add(newJButton(“No.“),gbdc);panel.add(newJButton(“No.“),gbdc);panel.add(newJButton(“No.“),gbdc);gbdc.gridwidth=;gbdc.gridx=;panel.add(newJButton(“No.“),gbdc);gbdc.gridx=;gbdc.gridwidth=;gbdc.gridheight=;panel.add(newJButton(“No.“),gbdc);gbdc.gridx=;gbdc.gridheight=;panel.add(newJButton(“No.“),gbdc);gbdc.gridx=;panel.add(newJButton(“No.“),gbdc);gbdc.gridx=;gbdc.gridwidth=;panel.add(newJButton(“No.“),gbdc);gbdc.gridx=;gbdc.gridwidth=;panel.add(newJButton(“No.“),gbdc);}}在这个程序中,我们使用了GridBagLayout轻松地完成了这个界面的设计,允分凸现出它的强大。可以这么说,GridBagLayout是Java语言中最强大的布局管理器。GridBagLayout,从名字上看,就知道它与GridLayout有一定的渊源,是的,GridBagLayout的确与其十分类似,也是使用网格来进行布局管理的。但与GridLayout(网格布局不同的是,GridBagLayout不像网格布局一相,需要所有的部件的大小、形状相同。而且还可以将某一个部件放在一个固定的位置上。下面,我们一起来分析一下testGridBag.java程序。panel.setLayout(newGridBagLayout());在调用setLayout方法时,指定为GridBagLaoyout,使panel使用GridBag布局管理。GridBagConstraintsgbdc=newGridBagConstraints();GridBagLayout布局管理器是通过一个GridBagConstraints类来实现神奇的效果的。所以,我们要在使用时先定义一个GridBagConstraints类的对象。在这个程序中,我们定义了一个GridBagConstraints类的对象gbdc。gbdc.fill=GridBagConstraints.BOTH;由于网格单元可能比该单元中的部件大,如果是这样,部件放置在单元格内会有一些多余空间。在默认情况下,部件不会扩张,也就是不会填充这个多余空间。GridBagConstraints提供了一个fill属性,我们可以通过设置它的值来起到不同的效果。¨GridBagConstraints.NONE:不扩张,是默认值;¨GridBagConstraints.HORIZONTAL:部件水平扩张,将水平方向的多余空间填满;¨GridBagConstraints.VERTICAL:部件垂直扩张,将垂直方向的多余空间填满;¨GridBagConstraints.BOTH:部件同时向两个方向扩张,将单元格填满。gbdc.weightx=;gbdc.weighty=;weightx和weighty是GridBagConstraints提供的另一对属性。它的取值是整型数,默认值为。用来设置行(weightx、列(weighty的“重量”,如果值为的话,所有的部件都会紧收在一起,聚集在中央,如图-所示。而如果取值为其它数字,则会根据值来分配空间。panel.add(newJButton(“No.“),gbdc);panel.add(newJButton(“No.“),gbdc);panel.add(newJButton(“No.“),gbdc);在没有任何约束的时候,向gbdc中添加按钮,这时效果与采用网格布局的效果完全一样。一个接着一个地“占领”单元格。gbdc.gridwidth=;gbdc.gridx=;panel.add(newJButton(“No.“),gbdc);由于第四个按钮(No.是宽度是,在GridBagLayout中,是由gridwidth属性来控制添加进入的部件的宽度的。我们通过gbdc.gridwidth=将其设置为,这样,再添加进入的部件就会变成为个单元格的宽度。另外,我们再使用gbdc.gridx=让其另起一行,从最左边的单元格开始填充。因此,我们发现第四个按钮被加在了第二行,宽度为个单元格。gbdc.gridx=;gbdc.gridwidth=;gbdc.gridheight=;panel.add(newJButton(“No.“),gbdc);接下来,我们要摆放第五个按钮,这个按钮将从第个单元开始填充,其宽度为一个单元格,而高度则为两个单元格。因此,我们首先使用用gbdc.gridx=,使得下一个添加的部件(第五个按钮放入第个单元格(代表第个单元格,因此第个单元格应该是。由于,前面我们已经将gridwidth设置为了,因此,我们需要使用gbdc.gridwidth=,将其值设置回。最后使用gdbc.gridheight=,使得添入的部件的单元格纵向跨越两个单元格。gbdc.gridx=;gbdc.gridheight=;panel.add(newJButton(“No.“),gbdc);我想这一段程序,大家应该都不会再有什么理解上的问题了吧!主要提醒大家注意的是,我们使用gbdc.gridheight=将单元格纵向跨度改成了默认值。这是因为我们在前面需要时将其改成了,所以在此需要将其改回来。实例说明为了更好地理解这个强大的GridBagLayout布局管理器,我们再来做一个有趣的实验。首先,我们创建一个testGridBag.java源程序:testGridBag.javaimportjava.awt.*;importjavax.swing.*;importjava.applet.Applet;publilasstestGridBagextendsJApplet{publicvoidinit(){JPanelpanel=(JPanel)getContentPane();panel.setLayout(newGridBagLayout());GridBagConstraintsgbdc=newGridBagConstraints();panel.add(newJButton(“No.“),gbdc);panel.add(newJButton(“No.“),gbdc);setSize(,);}}然后我们使用鼠标改变一下窗口的大小,看一下,这两个按钮有什么变化?你会惊奇地发现,窗口改变了大小,两个按钮的大小却没有变,而且一直呆在正中央的位置。一些说明:在这个程序中,我们使用了一个以前没有用过的语句:setsize(.),它的功能是在程序中设置窗口的大小。现在我们对这个程序做一些修改!将添加两个按钮的两条语句:panel.add(newJButton(“No.“),gbdc);panel.add(newJButton(“No.“),gbdc);将它们扩展为:gbdc.weightx=;panel.add(newJButton(“No.“),gbdc);gbdc.weightx=;panel.add(newJButton(“No.“),gbdc);为什么会得到这个效果呢?我们在程序中添加按钮的程序段前加入一句:gbdc.fill=GridBagConstraints.HORIZONTAL;再重新编译一下程序,再看看程序的输出有什么变化!在得到结果之前,自己可以想象一下结果,然后看一下程序的实际输出与你的想法是否相吻合。我们惊奇地发现,第二个按钮,突然变得十分宽起来(如图-所示。这是因为放置第二个按钮的单元格的宽度是,而第一个按钮的宽度是。而且,我们又让第二个按钮横向扩展,因此得到了这样的输出结果。相信实验做到这里,不须我说,大家也会有一些心得体会了。但是GridBagLayout远不止这一点,大家应该多做试验,才能够在真实的使用环境中有效地掌握GridBagLayout。

您可能感兴趣的文章:

相关文章