黑马程序员——Java基础知识之DUI(图形用户界面)

来源:互联网 发布:淘宝店铺入驻有什么好 编辑:程序博客网 时间:2024/04/27 17:22

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-
(一)什么GUI?
1、图形用户界面,用于计算机与用户交互的一种方式,英文是GraphicalUser Interface

2、javaGUI:
java也将这种界面封装为对象,其中的对象都放在了两个包中:java.Awt包和javax.Swing包。
ava.Awt包:Abstract Window Toolkit,即抽象窗口工具包。要调用本地系统方法实现功能,属重量级控件。
javax.Swing包:在AWT的基础上建立的一套图形界面系统,其中提供了更多的组件,且完全由java实现,增强了移植性,属轻量级控件。

3、计算机的两种交互方式与用户:
GUI: Graphical User Interface,图形用户接口,用图形方式,来显示计算机操作界面,方便直观。
CLI: Command LineUser Interface,命令行用户接口,即常见的Dos命令行操作,须记住一些命令,操作不直观。

(二)、Awt的体系图
这里写图片描述
注释:Container:为容器,是一个特殊的组件,该组件中可以通过add方法添加其他组件进来。

(三)、布局管理器
就是容器中的组件排列方式

布局管理器的特点和分类:

这里写图片描述

(四)、窗体创建的步骤
①创建Frame窗体:
Frame f = new Frame(“my Frame”);//可设置标题,即窗体名字
②对窗体进行基本设置:如大小,位置,布局等:
f.setSize(int wight,int hight);//窗体大小设置
f.setLocation(int x,int y);//窗体显示位置设置,横纵坐标
f.setBounds(int x,int y,int wight,int hight),也可以直接用这个方法对大小和位置设置
f.setLayout(Layout layout),参数为指定的布局管理器,如FlowLayout
③定义组件:
如Button b = new Button(“my Button”);//可设置组件的名称
④将组件通过窗体的add方法添加到窗体中:
f.add(b);//将按钮组件添加进窗体
⑤让窗体显示:
f.setVisible(boolean b);//通过设置参数是true还是false是否显示窗体
例子程序:

class AwtFirstDemo   {      public static void main(String[] args)       {          //创建Frame窗体:          Frame f = new Frame("my Frame");//可设置标题          //对窗体进行基本设置:如大小,位置,布局等:          f.setSize(500,100);//窗体大小设置          f.setLocation(300,150);//窗体显示位置设置,横纵坐标     //也可以直接用这个方法对大小和位置设置         // f.setBounds(int x,int y,int wight,int hight);          //参数为指定的布局管理器,如FlowLayout          f.setLayout(new FlowLayout());        //定义组件:          Button b = new Button("my Button");//可设置组件的名称          //将组件通过窗体的add方法添加到窗体中:          f.add(b);//将按钮组件添加进窗体          //让窗体显示://通过设置参数是true还是false是否显示窗体            f.setVisible(true);    }  }  

(四)、事件监听机制
应用该机制的流程:
①事件源(组件):awt或swing包中的那些图形界面组件
②事件(Event):每一个事件源都有自己特有的对应事件和共性事件
③监听器(Listener):将可触发某一事件的动作(不只一个动作),都封装到侦听器中。
④事件处理:引发事件后的处理方式。

这里写图片描述
例子程序:

public static void main(String[] args)     {        Frame f = new Frame("my awt");        f.setSize(500,400);        f.setLocation(300,200);        f.setLayout(new FlowLayout());        Button b = new Button("我是一个按钮");        f.add(b);//事件监听,监听动作和处理可以使用匿名内部类实现        f.addWindowListener(new WindowAdapter()        {//监听关闭,并处理            public void windowClosing(WindowEvent e)            {                System.out.println("我关");                System.exit(0);            }            //监听并处理            public void windowActivated(WindowEvent e)             {                System.out.println("我活了。");            }            //监听打开动作,并处理            public void windowOpened(WindowEvent e)             {                System.out.println("我被打开了,hahahhahah");            }        });

例子程序:

import java.awt.*;import java.awt.event.*;class  FrameDemo{    //定义该图形中所需的组件的引用。    private Frame f;    private Button but;    FrameDemo()    {        init();    }    public void init()    {        f = new Frame("my frame");        //对frame进行基本设置。        f.setBounds(300,100,600,500);        f.setLayout(new FlowLayout());        but = new Button("my button");        //将组件添加到frame中        f.add(but);        //加载一下窗体上事件。        myEvent();        //显示窗体;        f.setVisible(true);    }    private void myEvent()    {        f.addWindowListener(new WindowAdapter()        {            public void windowClosing(WindowEvent e)            {                System.exit(0);            }        });        //让按钮具备退出程序的功能        /*        按钮就是事件源。        那么选择哪个监听器呢?        通过关闭窗体示例了解到,想要知道哪个组件具备什么样的特有监听器。        需要查看该组件对象的功能。         通过查阅button的描述。发现按钮支持一个特有监听addActionListener。        */        but.addActionListener(new ActionListener()        {            private int count = 1;            public void actionPerformed(ActionEvent e)            {                //System.out.println("退出,按钮干的");                //System.exit(0);                //f.add(new Button("Button-"+(count++)));                //f.setVisible(true);                //f.validate();                //System.out.println(e.getSource());                Button b = (Button)e.getSource();                Frame f1 = (Frame)b.getParent();                f1.add(new Button("button-"+count++));                f1.validate();            }        });    }    public static void main(String[] args)     {        new FrameDemo();    }}

重要:鼠标和键盘的监听事件例子程序
例子程序一:鼠标监听

but.addMouseListener(new MouseAdapter()          {              //int count=0;              public void mouseClicked(MouseEvent e)              {              //  if(e.getClickCount()==2)              //      System.out.println("鼠标双击按钮");              //  System.out.println("鼠标单击按钮");                  //System.exit(0);                  showFile();//显示到文本区中              }              /*             public void mouseEntered(MouseEvent e)             {                 System.out.println("鼠标放进入按钮范围"+(++count)+"次");             }             */          });  

例子程序二:键盘监听

//添加键盘监听but.addKeyListener(new KeyAdapter()        {            public void keyPressed(KeyEvent e)            {                   if(e.isControlDown()&&e.getKeyCode()==KeyEvent.VK_ENTER)                    //System.exit(0);                System.out.println("ctrl+enter is run");                //System.out.println(KeyEvent.getKeyText(e.getKeyCode())+"...."+e.getKeyCode());            }        });

其他知识点:
例子程序:将路径下的目录或文件列出

//将路径下的目录或文件列出      private void showFile()      {          String path=tf.getText();//获取文本框内容          File file=new File(path);//将路径封装成文件对象          //判断是否存在          if(file.exists())          {              ta.setText("");//清空文本区中的内容              //如果是目录              if(file.isDirectory())              {                  String[] dir=file.list();//列出目录下的文件和目录                  //遍历                  for (String name : dir)                  {                      ta.append(name+"\r\n");//添加到文本区中                  }              }              else                  ta.append(file.getName());//如果是文件,则只显示该文件的名字          }          else              System.out.println("您输入的路径不存在");      }      public static void main(String[] args)       {          //运行窗体          new KeyAndMouseEvent();      }  
0 0