先考虑游戏界面的设计与实现。有多种方法可以实现如图6-14所示的界面。
1.界面设计中的问题及其解决
这种网格状的布局通常用网格布局管理器。考虑到标签通常没有边框,所以如果要用网格布局管理器,还要加入间隔。比如,用AWT的Label实现网格布局,如图6-15所示。
图6-14 游戏界面
图6-15 Label网格布局
由于网格布局在四周不能留有间隔,所以图6-15看起来不如图6-14所示的设计优美。若选用按钮,情况与选用标签相同,所以,本程序不采用网格布局管理器,而采用直接布局。因为在不使用布局管理器时,可用方法setBound(x,y,width,height)直接设置控件的坐标(x,y)及其宽度width和高度height。
2.实现界面设计(1)
下面的例题实现了上述设计思想。这里用标签或按钮采用网络布局的设计留作习题。
【例6-8】用标签Label不设置布局管理器,实现界面设计(1)。
运行程序结果如图6-14所示。
[编程说明]
(1)符串与数字相加及括号的使用
在语句(15.1.1)中使用了字符串与数字相加形成新的字符串:(www.xing528.com)
因为""是一个空字符串,所以,它与数字(k+1)相加可以形成一个字符串。若没有这个空字符串,用语句
在编译时,将出现错误。还需要注意的是,这里用一个括号将k+1放入其内。这对括号“()”表示“k+1”内的符号“+”是一个加法运算,不是字符串的相加。若删除这个括号,用语句
将得到结果如图6-16所示。因为根据Java的字符串与数字相加规则,""+k是一个字符串“k”。这个字符串“k”与数字1相加形成一个新的字符串“k1”。注意,所谓字符串相加,其实就是“合并”运算。这就解释了如图6-16所示的结果。
(2)setBounds(x,y,width,height)
设置位置(x,y)和宽度width,高度height。这个函数只有在不设置布局管理器时才起作用,而且,在不设置布局管理器时,若不使用这个函数,将不显示加入的控件。比如,在程序中若注释了以下语句:
其结果将出现结果如图6-17所示。
图6-16 语句newLabel(""+k+1)的结果
图6-17 不设置布局管理器不用setBounds()结果
注意,出现这种结果时Java编译器没有任何信息提示,所以,这是读者需要特别注意之处。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。