Java的图形界面编程(二)

时间:2022-01-21 11:52:01

Java的图形界面编程(二)

    上一次总结了如何在一个Frame里添加多个Panel,我写的代码里在一个按照GridLayout(网格)布局的Frame添加了4个Panel,各按照BorderLayout(东南西北中,是默认),FlowLayout(顺序),GridLayout(网格),CardLayout(卡片)的Panel。这一次我在这个的基础上进行了扩充,加入了菜单栏,文本域,文件对话框,复选框,下拉列表。

     要创建菜单栏,首先要有个MenuBar(菜单栏),再向其中加入Menu(菜单项),再向每个菜单项中加入MenuItem(菜单项元素),看代码

     MenuBar mb=new MenuBar();

  Menu mn1=new Menu("我喜欢");

  Menu mn2=new Menu("点秋香");

  MenuItem mi1=new MenuItem("第一个玩家");

  MenuItem mi2=new MenuItem("第二个玩家");

  MenuItem mi3=new MenuItem("退出");

  mi3.addActionListener(new ActionListener()  //事件监听

  {

   public void actionPerformed(ActionEvent e)

   {

    System.exit(0);

   }

  });

  MenuItem mi4=new MenuItem("打开");

  mi4.addActionListener(new ActionListener()

  {

   public void actionPerformed(ActionEvent e)

   {

    FileDialog fd=new FileDialog(f,"打开文件",FileDialog.LOAD); //FileDialog分为Load和Save两种模式

    fd.setVisible(true);        

    String strFile=fd.getDirectory()+fd.getFile();

    try

    {

     byte[] buf=new byte[1024*10];

     FileInputStream fis=new FileInputStream(strFile);

        int length=fis.read(buf);

        final Frame f1=new Frame();

        f1.setSize(400,600);

        f1.setLocation(400,400);

        TextArea ta=new TextArea();

        f1.add(ta);

        ta.append(new String(buf,0,length));

        f1.addWindowListener(new WindowAdapter()

        {

         public void windowClosing(WindowEvent e)

         {

          f1.dispose();

         }

        });

        f1.setVisible(true);

    }

    catch(Exception ex)

    {

     ex.printStackTrace();

     System.exit(0);

    }

   }

  });

  mn1.add(mi1);

  mn1.add(mi2);

  mn1.add(mi4);

  mn2.add(mi3);

  mb.add(mn1);

  mb.add(mn2);

  f.setMenuBar(mb);

在这上面的一段代码中,我菜单mn1中的菜单项mi4,被点击以后,可以带开一个文件对话框,可以选择文件,然后在新弹出的窗口F1中显示出这些文件中的内容。

在菜单mn2的菜单项mi3点击可以退出整个程序。

另外,我为新弹出的窗口f1也设置了WindowListener,当执行关闭操作的时候,不应该调用 System.exit(0),那样只会让整个程序退出。应该调用dispose()让当前的窗口隐藏。

另两次总结的代码综合在一起。在java.awt的练习代码文章中,有注释。