正 文

Java学习之第一个图形界面


www.7dspace.com  更新日期:2006-1-28 8:07:20  七度空间


首先,类MenuUp继承了MenuBar类的性质,所谓的MenuBar就是类库中已经创建好的可供继承和使用的类,它的默认放置是在面板中的最上端,可以为它添加菜单项,这个可以由用户自行编写,如上,我们创建了两个菜单目录项,即File和Help,注意,由于Help是一个特殊的菜单,一般放置在菜单栏的最末位,所以添加的时候也需要注意,要添加一条setHelpMenu()的语句。程序中的“对象.add()”表示在对象中添置一些其它的对象,“对象.addSeparator()”是指添加分隔符的意思。

创建好这个类后,在Drawing(String ss)中要添加一条setMenuBar( new MenuUp() ),大家注意,虽然Frame默认的是边界布局管理器,但是由于MenuBar始终是在最上端的,所以,即使当添加了add(**, BorderLayout.NORTH)后,这个部件也是位于MenuBar之下的。

现在运行程序就会有菜单的图象出现,当然,由于没有编写功能,所以菜单内容还不可选,这我们会到后面介绍。

前面提到,MenuDown类要通过使用一个Panel类来实现,那么我们不如直接将MenuDown继承Panel类,让它直接具有Panel的功能(也就是说,现在的MenuDown的布局管理器为FlowLayout,在其中添加Choice和Checkbox,它们将顺序摆放):

class MenuDown extends Panel

       {

              public MenuDown()

              {

                     Choice ce = new Choice();//创建一个Choice对象

                     ce.addItem( "Rectangle" );

                     ce.addItem( "Ellipse" ); //定义Choice中的选项

                     add( ce ); //添加Choice对象

                     CheckboxGroup cbg = new CheckboxGroup();//创建一个单选框的框架

                     Checkbox cb1 = new Checkbox( "Red", cbg, false );

                     Checkbox cb2 = new Checkbox( "Green", cbg, false );

                    Checkbox cb3 = new Checkbox( "Blue", cbg, false );

                     Checkbox cb4 = new Checkbox( "Black", cbg, true); //创建4个单选框

                     add( cb1 );

                     add( cb2 );

                     add( cb3 );

                     add( cb4 ); //将4个单选框添加到Panel中

                     Checkbox cb = new Checkbox( "Filled", false); //创建复选框

                     add( cb );

              }

       }

Checkbox中的true和false分别表示默认选择是否选中,addItem为Choice独有的,它就是添加选择项的方法。大家可以看到,对于所有的单选框,定义了一个名为cbg的CheckboxGroup,创建单选框对象的时候要在添加语句中写成“Checkbox 对象= new Checkbox(名称,cbg,false/true)”,即要指定这个对象所在的group的名称。为了在Frame中加入这个类,需要在 Drawing(String ss)中添加add(new MenuDown(), BorderLayout.SOUTH)语句。

最后的类就是画图的面板了,在这里我们使用Canvas来进行处理,现在不处理任何内容,所以可以什么都不写,只是创建一个类即可:

class Draw extends Canvas{}

然后,在Drawing(String ss)中添加add(new Draw(), BorderLayout.CENTER )就可以运行了,大家不妨试一下。下一篇将介绍如何完善这个程序,使得其具有绘图功能。上述创建图形界面的完整代码如下:

import java.awt.*;

public class Drawing extends Frame

{

       Drawing(String ss)

       {

              setTitle(ss);//设置标题

              setSize (400,400);//设置大小

              setResizable( false );//将大小改为不可更改的

              setMenuBar( new MenuUp() );//添加菜单项

              add(new MenuDown(), BorderLayout.SOUTH);//在最南边添加MenuDown对象

              add(new Draw(), BorderLayout.CENTER );//在中心添加Draw对象

              setVisible( true );

              addWindowListener( new WindowAdapter(){

                     public void windowClosing( WindowEvent e ){

                            System.exit( 0 );

                            }

                     });//增加关闭程序功能

       }

       public static void main(String args[])

              {

                     Drawing d = new Drawing("Paint Program");//创建画图对象

              }

       class MenuDown extends Panel

       {

              public MenuDown(Drawing d)

              {

                     Choice ce = new Choice();//创建一个Choice对象

                     ce.addItem( "Rectangle" );

                     ce.addItem( "Ellipse" );//定义Choice中的选项

                     add( ce );//添加Choice对象

                     CheckboxGroup cbg = new CheckboxGroup();//创建一个单选框的框架

                     Checkbox cb1 = new Checkbox( "Red", cbg, false );

                     Checkbox cb2 = new Checkbox( "Green", cbg, false );

                    Checkbox cb3 = new Checkbox( "Blue", cbg, false );

                     Checkbox cb4 = new Checkbox( "Black", cbg, true); //创建4个单选框

                     add( cb1 );

                     add( cb2 );

                     add( cb3 );

                     add( cb4 );//将4个单选框添加到Panel中

                     Checkbox cb = new Checkbox( "Filled", false);//创建复选框

                     add( cb );//在Panel中添加复选框

              }

       }

       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中

              }

       }

       class Draw extends Canvas{}

}

5页,页码:[1] [2] [3] [4] [5] 

上一篇:用Java日志包进行调试
下一篇:Java 1.5 中新的静态导入特性
标题:Java学习之第一个图形界面 作者:yjwgeg 来源:开发者在线
收藏此页】【打印】【关闭
站 内 搜 索
 

热 点 导 读
特 别 推 荐