上面提到了关于修改布局管理器的问题,Frame的默认布局管理器是边界布局管理器,如果要将它转化成FlowLayout或者 GridLayout甚至null的布局管理方式应该如何处理呢?java给我们提供了修改的方法,假设创建的Frame对象为f,那么将其修改成 FlowLayout的方法就是f.setLayout(new FlowLayout()),而如果修改成null,则只需要写成f.setLayout(null)即可。
有了以上的知识,我们就可以开始进行我们的图形创作了,
首先要添加一个MenuBar,也就是菜单项,虽然Frame是默认BorderLayout的,但是也没有必要将MenuBar放置在最上面,因为MenuBar默认就是一定要放在最上方的,即使是再添加一个置于NORTH的部件,也是位于MenuBar下方的。
中间我们留出的主要部分是画图用的,需要较大的空间,所以放置在CENTER部位。
下方的部件比较多,也比较复杂。选择图形类型的部件叫做Choice,单选框和复选框都叫做Checkbox,不同的地方是,对于单选框而言,要添加一个叫CheckboxGroup的部件将单选框圈在其范围内,这样我们就可以完成单选的功能了。于是,需要放在最下方的部件有3个之多,那么,如果都使用BorderLayout.SOUTH的话,几个部件将叠加在一起,我们就只能够看见最上方的部件,这样的结果显然不是我们希望的。那么怎么处理这个问题呢?我们知道Panel的默认布局管理器是FlowLayout的,那么如果我们将一个Panel加在Frame的最南端,然后依次加入Choice 和Checkbox单选框和复选框,那么问题就可以解决。
现在,让我们来着手做我们自己的图形界面吧!
首先要引入java.awt.*,这个包是基本的图形包,如Frame,Panel都在这个包中。引用方法为:import java.awt.*;
接下来你可以创建一个叫做Drawing的类,让它继承原包中有的Frame类,在Drawing类中,可以添加自己想要的功能以完善这个Frame,继承用extends来操纵,如下:
public class Drawing extends Frame
{
Drawing(String ss)
{
setTitle(ss); //设置标题
setVisible( true );
}
public static void main(String args[])
{
Drawing d = new Drawing("Paint Program");
}
}
在main函数中创建了一个Drawing的对象,命名为d,并传递这个Frame的标题名,类Drawing中的Drawing(String ss)表示对Drawing重新构造了一遍,Drawing(String ss)称为过载,ss接受main函数传递过来的字符串。如果不使用过载方式也可以完成,程序如下修改即可:
public class Drawing extends Frame
{
Drawing()
{
setTitle("Paint Program");
setVisible( true );
}
public static void main(String args[])
{
Drawing d = new Drawing();
}
}
