ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:22.50KB ,
资源ID:19829510      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/19829510.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(深入学习GridBagLayoutWord下载.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

深入学习GridBagLayoutWord下载.docx

1、 你应该能看到在草图里有一些线,这些线是用来把总界面分成若干行和列的,这样你就很清楚每一个组件放置的格子位置。这就是GridBagLayout里格的那一部分,而图上的数字就是格的号码。import java.awt.*;import java.awt.event.*;import javax.swing.*;public class GridBagWindow extends JFrame private JButton searchBtn; private JComboBox modeCombo; private JLabel tagLbl; private JLabel tagModeLb

2、l; private JLabel previewLbl; private JTable resTable; private JTextField tagTxt; public GridBagWindow() Container contentPane = getContentPane(); GridBagLayout gridbag = new GridBagLayout(); contentPane.setLayout(gridbag); GridBagConstraints c = new GridBagConstraints(); /setting a default constrai

3、nt value c.fill =GridBagConstraints.HORIZONTAL; tagLbl = new JLabel(Tags); c.gridx = 0; /x grid position c.gridy = 0; /y grid position gridbag.setConstraints(tagLbl, c); /associate the label with a constraint object contentPane.add(tagLbl); /add it to content pane tagModeLbl = new JLabel(Tag Mode c.

4、gridy = 1; gridbag.setConstraints(tagModeLbl, c); contentPane.add(tagModeLbl); tagTxt = new JTextField(plinth c.gridx = 1; c.gridwidth = 2; gridbag.setConstraints(tagTxt, c); contentPane.add(tagTxt); String options = all, any; modeCombo = new JComboBox(options); c.gridwidth = 1; gridbag.setConstrain

5、ts(modeCombo, c); contentPane.add(modeCombo); searchBtn = new JButton(Search c.gridy = 2; gridbag.setConstraints(searchBtn, c); contentPane.add(searchBtn); resTable = new JTable(5,3); c.gridy = 3; c.gridwidth = 3; gridbag.setConstraints(resTable, c); contentPane.add(resTable); previewLbl = new JLabe

6、l(Preview goes here c.gridy = 4; gridbag.setConstraints(previewLbl, c); contentPane.add(previewLbl); addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0); ); public static void main(String args) GridBagWindow window = new GridBagWindow(); window.setTitle(Grid

7、BagWindow window.pack(); window.setVisible(true);构造方法前的代码都不是很特殊,都是一些相当标准的import和变量定义。但是进入构造方法后,事情就变得有趣了。Container contentPane = getContentPane();GridBagLayout gridbag = new GridBagLayout();contentPane.setLayout(gridbag); 我们以GridBagWindow的内容面板作为开始来创建一个GridBagLayout对象,准确地说,这个方法与过去我们所创建GridLayout对象和Bor

8、derLayout对象的方法是一样的。那么,现在我们就开始来设置GridBagLayout对象使它作为内容面板的布局。GridBagConstraints c = new GridBagConstraints(); 然后我要提到这整个进程中的一个独特的对象,那就是GridBagConstraints。这个对象在GridBagLayout中控制所有被安置在其中组件的约束。为了把一个组件增加到你的GridBagLayout中去,你首先必须将它与一个GridBagConstraints对象建立连接。GridBagConstraints可以从11个方面来进行控制和操纵,也可以给你提供一些帮助。这些内容

9、是:Gridx组件的横向坐标Girdy组件的纵向坐标Gridwidth组件的横向宽度,也就是指组件占用的列数,这与HTML的colspan类似Gridheight组件的纵向长度,也就是指组件占用的行数,这与HTML的rowspan类似Weightx指行的权重,告诉布局管理器如何分配额外的水平空间Weighty指列的权重,告诉布局管理器如何分配额外的垂直空间Anchor告诉布局管理器组件在表格空间中的位置Fill如果显示区域比组件的区域大的时候,可以用来控制组件的行为。控制组件是垂直填充,还是水平填充,或者两个方向一起填充Insets指组件与表格空间四周边缘的空白区域的大小Ipadx 组件间的横

10、向间距,组件的宽度就是这个组件的最小宽度加上ipadx值ipady 组件间的纵向间距,组件的高度就是这个组件的最小高度加上ipady值 可能对于一个组件的每一个实例你都需要为它建立一个单独的GridBagConstraints;然而,这种方法我们并不推荐使用。最好的方法是,当你调用它的时候把对象设置为默认值,然后针对于每一个组件改变其相应的域。 这个方法具有通用性,因为在一些域中,比如insets、padx、pady和fill这些域,对于每一个组件来说一般都是相同的,因此这样对一个域进行设置就会更轻松了,也能更轻松的在另外的组件中改变某些域的值。 如果在改变了某些域值之后,你想回到原始的域值的

11、话,你应该在增加下一个组件之前进行改变。这种方法使你更容易明白你正在修改的内容,也能使你更容易明白在一连串对象中的这11个参数的作用。 也许你现在对这些内容还是一知半解,不过事实上一旦你理解了GridBagConstraints,值得安慰的是你以后做再困难的工作都会游刃有余了。所以,如果我们已经明白了GridBagConstraints的详细用法了,那么现在就让我们来看看在实际应用中应该如何来实现它:tagLbl = new JLabel(c.gridx = 0;c.gridy = 0;gridbag.setConstraints(tagLbl, c); /设置标签的限制contentPane

12、.add(tagLbl); /增加到内容面板我们所做的是示例我们的标签、分配给它一个格位置,将它与一个约束对象联系起来并把它增加到我们的内容面板中。tagModeLbl = new JLabel(c.gridy = 1;gridbag.setConstraints(tagModeLbl, c);contentPane.add(tagModeLbl); 请注意,虽然我们已经在我们的约束对象中把gridx的值设置为0,但是在这里我们仍然要对它进行重新设置这样做没有其它原因,只是为了增加可读性。 下面,我们增加一个文本域以便能存储我们希望能搜索到的关键字,再增加一个组合框以便用来搜索多个关键字。除了

13、我们希望的文本域有两列之外,这个概念其他的方面都与上面所说的是相同的,所以,我们需要在增加组合框之前重新设置文本域的值。tagTxt = new JTextField(c.gridx = 1;c.gridwidth = 2;gridbag.setConstraints(tagTxt, c);contentPane.add(tagTxt);String options = modeCombo = new JComboBox(options);c.gridwidth = 1;gridbag.setConstraints(modeCombo, c);contentPane.add(modeCombo

14、); 做了这些之后,我们再在内容面板中增加一些其余的简单组件,这时候我们就能够浏览它了;其余的代码应该不会出现任何问题了。到这个阶段,我们应该已经得到了一个类似于我们先前所设计的界面了。 最近正在修改公交线路查询系统,做系统的时候都是用NULL布局,由于NULL布局调用windows系统的API,所以生成的程序无法在其他平台上应用,而且如果控件的数量很多,管理起来也比较麻烦,最近我发现一个非常强大的布局模式 :GridBagConstraints布局,先发一个实例:gridx = 2; / X2gridy = 0; / Y0gridwidth = 1; / 横占一个单元格gridheight

15、= 1; / 列占一个单元格weightx = 0.0; / 当窗口放大时,长度不变weighty = 0.0; / 当窗口放大时,高度不变anchor = GridBagConstraints.NORTH; / 当组件没有空间大时,使组件处在北部fill = GridBagConstraints.BOTH; / 当格子有剩余空间时,填充空间insert = new Insets(0, 0, 0, 0); / 组件彼此的间距ipadx = 0; / 组件内部填充空间,即给组件的最小宽度添加多大的空间ipady = 0; / 组件内部填充空间,即给组件的最小高度添加多大的空间new GridBa

16、gConstraints(gridx, gridy, gridwidth, gridheight, weightx, weighty, anchor, fill, insert, ipadx, ipady);GridBagLayout之变态玩法:很多人抱怨GridBagLayout没有XYLayout布局灵活,但是做为一个专业程序,所有组件必须随着窗口大小改变而改变。其次,当仅仅简单使用XYLayout时,需要包含一个大库,对于一些场合这些多余的类超出了可接受范围(例如Applet应用)拿一个比较简单的界面来作介绍 1。首先建立一个JFrame,设定它的Layout为XYLayout 2。在其

17、上堆上控件,对齐好位置,否则转换时会有较大调整 3。完成创建控件后,设置Layout为GridBagLayout,这时所有控件基本保持原位,待下一步做精细调整 4。选择一个控件,点击右边属性栏的constraints 对应的调整按钮,弹出最重要的属性调整界面 5。将所有边界和空白去掉,同时Grid大小也暂时去掉,因为这些边距会影响我们的调整 6。设置需要扩展的行和列 7。粗轮廓完成后,可以设置组件边距进行精细调整了 8。精细调整完成,运行调试以下是GridBagLayout的详解:虽说GridBagLayout和GridLayout只有一点差别,它的作用却是出奇的大。这是因为GridBagLa

18、yout一改其他的外观管理器的死板模样,具有很多的灵活性。它不再像其他的外观管理器那样,使得各个组件的大小都一样。 GridBagLayout通过类GridBagConstraints的帮助,按照设计的意图,改变组件的大小,把它们摆在设计者希望摆放的位置上。在GridBagLayout中,每个组件都有一个GridBagConstraints 对象来给出它的大小和摆放位置。我们在使用GridBagLayout的时候,最重 要的就是学会使用这个类GridBagConstraints的使用方法,学会如何设置组件的大小、位置等限制条件。我们先看一个用GridBagLayout外观管理器生成的窗口图14

19、.8程序14.5的执行结果这个窗口里面的几个按钮有的大、有的小,其大小、位置均不同,没有一定的规律可循,这即是发挥了GridBagLayout外观管理器的灵活性。生成此窗口的程序为:程序14.5importjava.awt.*;/输入所有的java.awt 类publicclasswindow7extendsjava.applet.Appletpublicvoidinit() resize(300,100);/设置窗口的大小GridBagConstraintsgbc=new GridBagConstraints(/使用类GridBagConstriantssetLayout(newGridBa

20、gLayout();/设定外观管理器为 GridBagLayout外观管理器 gbc.fill =GridBagConstraints.BOTH;/所有的按钮都会把分配的剩余空间填满gbc.gridwidth=1;/设置第一个按钮的大小gbc.gridheight=1;/ ButtonButton1=newButton(东 (GridBagLayout)getLayout( ).setConstraints(Button1,gbc); add(Button1);gbc.gridwidth= GridBagConstraints.REMAINDER;/第二个按钮填满整行空间ButtonButto

21、n2=newButton(西 (GridBagLayout)getLayout( ).setConstraints(Button2,gbc); add(Button2);gbc.gridheight=4;/设置第三个按钮的大gbc.gridwidth= 1;ButtonButton3=newButton(南 (GridBagLayout)getLayout( ).setConstraints(Button3,gbc); add(Button3);gbc.gridheight=2;/设置第四个按钮的大gbc.gridwidth= 2;/GridBagConstraints.REMAINDER;

22、ButtonButton4=newButton(北 (GridBagLayout)getLayout( ).setConstraints(Button4,gbc); add(Button4);Button Button5=newButton(中 (GridBagLayout)getLayout( ).setConstraints(Button5,gbc); add(Button5);gbc.insets=new Insets(5,6,7,8);/设置第五个按钮的位置ButtonButton6=newButton(好酒在张弓(GridBagLayout)getLayout( ).setConst

23、raints(Button6,gbc); add(Button6); 注释:程序14.5里面有星号的语句都将做详细的解释下面就详细地解释一下程序14.5,通过对这个小程序的分析可以从中了解GridBagLayout外观管理器的工作原理和工作方法。GridBagLayout外观管理器实际上是根据类GridBagConstraints所给出的条件限制以及组件本身的一向特性条件(例如每个组件程序允许的最小尺寸),来决定各个组件的外观的。让我们把程序14.5之中出现的新鲜的语句一条一条地看个明白吧:1.gbc.fill=GridBagConstraints.BOTH;每个组件有一定的原始大小,例如在类

24、FlowLayout外观管理器的管理之下显示的就都是组件的本身原始大小。如果我们分配给一个组件的空间比它原本所需要的空间大时,就需要一定的方式方法来决定如何处理这一部分多余的空间。这时就用到了fill值。Java根据人们给这个fill设定的值来决定如何处理比组件原始空间大的那部分空间。fill可以取四种不同的值,它们分别代表了四种不同的剩余空间处理方式:GridBagConstraints.NONE不必理睬剩余空间的存在,让它空着好了。GridBagConstraints.BOTH不让一点剩余空间存在,改变组件的大小,让它填满分配给它的整个空间。GridBagConstraints.HORIZONTAL调整组件的大小,把水平方向的空间填满。GridBagConstraints.VERTICAL调整组件的大小,把垂直方向的空间填满,让水平方向的空间空着吧。2.gbc.gridwidth=1;和 gbc.gridheight=1;这两句话像是一对孪生兄弟,应该同时给以同样的重视。它

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1