扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:开发者在线 来源:开发者在线 2007年8月2日
关键字: java Chris Duckett 网格 RSS
在上一篇关于网格包布局的介绍文章中,我们留下了一个框架,它能够达到我们的目标但是功能没有实现,本文我们将完成该框架。
填充与坐标
扩大由上篇文章中的完成代码产生的框架使得组件仍旧处于框架的中心而且它们的大小并不受影响。为了改变这一情况,我们需要给定组件的填充值和坐标。
填充值描述了当显示区域大于组件时,组件将如何作出反应。Weightx和weighty分别描述了如何填充水平方向和垂直方向的额外空间。
看一下我们期望的结果,可以发现框架顶部的标签,组合框,按钮和文本域仍旧未改变,额外空间被表格和图像浏览标签占据。
在给这些变量赋值之前,可以注意到表格和图像浏览标签上面有滚动条。因此,我们需要在JScrollPane中包含他们。下面的代码用于表格,用于标签的代码基本上一样。
JScrollPane scrollPane = new JScrollPane(resTable);
scrollPane.setMinimumSize(new Dimension(450, 110));
....
gridbag.setConstraints(scrollPane, c);
contentPane.add(scrollPane);
接下来我们需要填充可以获得的空间并重新调整框架大小。下面是添加到表格和图像浏览标签的代码,如果它们之间有一个组件的话,代码中的填充值需要重新设定。
c.fill = GridBagConstraints.BOTH;
因为当前的表格维数是适当的,我们只想使得图像标签当重新设置是可以增大和缩小。因此我们将下面的代码添加到图形浏览标签上:
c.weightx = 1;
c.weighty = 1;
然而,这并没有更多地说明坐标值。当在整个网格包布局上为坐标赋值时,每个行和列得值必须加1。如果我们想要在距图像浏览标签一半的位置垂直扩大表格时,应该是用下面的代码:
//For the JTable
c.weighty = 0.33;
//For the image labebl
c.weighty = 0.67;
这是网格包布局出现大量问题的地方且也是为什么说简化最初设计是一个好主意的原因。当为坐标赋值时,我们发现显示出网格十分有用。简单的简化GUI代码决不是一个好主意,当处理网格包布局时更是如此。
在得到需要的GUI图形用户接口后,我们需要的最后改变是右对齐标签和标签模式并在这些组件之间创建一些填充。
对齐可以很容易的实现:
tagLbl.setHorizontalAlignment(SwingConstants.RIGHT);
tagModeLbl.setHorizontalAlignment(SwingConstants.RIGHT);
为了创建围绕组件的填充,我们需要使用插入物。一个插入物标明了填充距离组件边缘的距离是多少,参数分别是顶部、左边、底端、右边。
我们将下面的Inset放在标记标签上:
c.insets = new Insets(5,5,5,15);
并在我们实例化文本域时重新设定它的值,因此需要在tab标签和tag模式标签上放置Inset:
c.insets = new Insets(0,0,0,0);
现在就得到了我们想要得,现在GUI应该和我们开始希望的一样了。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者