由于Drawing继承了Frame,所以Drawing本身也是一个Frame,所以它可以设置标题(setTitle(ss)),可以添加组件。现在程序就已经可以运行了,但只会是一块白板,什么都没有,大家有兴趣的话可以试一下。记住,setVisible(true)这句话不可省略,如果省略,就什么都看不见了。
如果按照上面尝试运行了一下,你就会发现这个程序还是有很多弊病的,例如图象没有立刻显现出来,要将Frame拉开(或者点最大化)才可以看得见那块白板,更要命的就是程序无法关闭,因为对关闭程序内容我们并没有做任何处理,你需要到任务管理器中找到一个叫javaw.exe或java.exe的线程,将它关闭才可以,这给我们带来了很多的麻烦,那么怎么解决这些问题呢?首先,我们可以设置Frame的大小,并且还可以将它设置为不可修改大小的,添加如下两条语句即可:
setSize (400,400); //设置大小
setResizable( false ); //将大小改为不可更改的
那么如何完成关闭程序的功能呢?我们需要调用一个系统的监听,如下添加:
addWindowListener( new WindowAdapter(){
public void windowClosing( WindowEvent e ){
System.exit( 0 );
}
});//增加关闭程序功能
这样调用的一个Frame的addWindowListener方法进行关闭处理,就可以满足我们的需求了,这个方法是系统提供的,完成的就是关闭程序的功能。
下面,我将讲解将如何描述MenuDown、MenuUp和Draw类。因为这三个类都是放置在刚才我们创建的Drawing上的,为了方便调用,我们可以将这三个类放置在Drawing类中,这叫做内部类。下面,我们先创建一个菜单类—MenuUp:
class MenuUp extends MenuBar
{
public MenuUp(){
Menu m1 = new Menu( "File" );
Menu m2 = new Menu( "Help" ); //创建两个菜单目录项
MenuItem mi1 = new MenuItem( "Clear" );
MenuItem mi2 = new MenuItem( "Print" );
MenuItem mi3 = new MenuItem( "Quit" ); //创建3个菜单项
m1.add( mi1 );
m1.add( mi2 );
m1.addSeparator();
m1.add( mi3 ); //将3个菜单项添加到名为File的菜单下,并加分隔符
add( m1 );
add( m2 );
setHelpMenu( m2 ); //将菜单目录项添加到MenuBar中
}
}
