黑马程序员--JAVA<GUI>

——- android培训java培训、期待与您交流! ———-

概述

  • CLI:Commend Line User Interface(命令行用户接口)
    • Dos命令行操作,需要记住各种指令,不便于用户的操作。
  • GUI:Graphical User Interface(图形用户接口)
    • 以图形的方式来显示计算机的操作界面,方便用户的使用。
    • Java为GUI提供的对象都存在Java.Awt与Javax.Swing两个包中。
  • Awt:需要调用本地系统方法来实现功能,属于重量级控件
  • Swing:是在Awt的基础上建立的一套图形界面系统,其中提供了更多的逐渐,且完全又Java实现,增强了移植性,属于轻量级控件。

布局管理器

  • 布局:容器中组件的排放方式,就是布局
  • 常用的布局管理器:
    • FlowLayout(流式布局管理器)
      • 从左到右的顺序排放
      • Panel默认的布局管理器
    • BorderLayout(边界式布局管理器)
      • 按东、南、西、北、中的方位排放
      • Frame默认的布局管理器
    • GridLayout(网格式布局管理器)
      • 规矩的矩阵排放
    • CardLayout(卡片式布局管理器)
      • 选项卡
    • GridBagLayout(网格包式布局管理器)
      • 非规则的矩阵排放

图形界面的建立与基本属性设置

  • 常用方法摘要
    • void setBounds(int x, int y, int width, int height)
      移动组件并调整其大小。 x,y为设置窗体位置,width,height为设置窗体大小。
    • void setSize(int width, int height)
      调整组件的大小,使其宽度为 width,高度为 height。
    • void setVisible(boolean b)
      根据参数 b 的值显示或隐藏此 Window ,true则显示,false则隐藏
    • void setLocation(int x, int y)
      将组件移到新位置。
    • void setLayout(LayoutManager mgr)
      设置此容器的布局管理器
Frame f = new Frame("my win");
f.setBounds(200,300,500,400);
f.setLayout(new FlowLayout()); 
f.setVisible(true);

事件监听机制

  • 作用:用于对各组件的操作事件进行监听,当该事件是监听器所监听的对象时,对该事件做出相对的处理。
  • 事件监听机制的组成:
    • 事件源(组件):Awt或Swing包中的图形化组件
    • 事件(Event):每一个事件源都有自己特有的对应时间和共性事件
    • 监听器(Listener):将可以触发某一事件的动作(不止一个)都已经封装到了监听器中
    • 事件处理(引发事件后的处理方式)
  • 事件监听机制流程图
    事件监听机制流程图

窗体事件

  • WindowListener:用于接收窗口事件的侦听器接口。旨在处理窗口事件的类要么实现此接口(及其包含的所有方法),要么扩展抽象类WindowAdapter(仅重写所需的方法)。然后使用窗口的 addWindowListener 方法将从该类所创建的侦听器对象向该 Window 注册。当通过打开、关闭、激活或停用、图标化或取消图标化而改变了窗口状态时,将调用该侦听器对象中的相关方法,并将 WindowEvent 传递给该方法。
    • 方法摘要
      • void windowActivated(WindowEvent e)
        将 Window 设置为活动 Window 时调用。
      • void windowClosed(WindowEvent e)
        因对窗口调用 dispose 而将其关闭时调用。
      • void windowClosing(WindowEvent e)
        用户试图从窗口的系统菜单中关闭窗口时调用。
      • void windowDeactivated(WindowEvent e)
        当 Window 不再是活动 Window 时调用。
      • void windowDeiconified(WindowEvent e)
        窗口从最小化状态变为正常状态时调用。
      • void windowIconified(WindowEvent e)
        窗口从正常状态变为最小化状态时调用。
      • void windowOpened(WindowEvent e)
        窗口首次变为可见时调用。
  • WindowAdapter:接收窗口事件的抽象适配器类。此类中的方法为空。此类存在的目的是方便创建侦听器对象。
    扩展此类可创建 WindowEvent 侦听器并为所需事件重写该方法
f.addWindowListener(new WindowAdapter(){
    public void windowClosing(WindowEvent e){               
        System.exit(0);
    }
});

Action事件

  • ActionListener:用于接收操作事件的侦听器接口。对处理操作事件感兴趣的类可以实现此接口,而使用该类创建的对象可使用组件的 addActionListener 方法向该组件注册。在发生操作事件时,调用该对象的 actionPerformed 方法。
    • 方法摘要
      • void actionPerformed(ActionEvent e)
        发生操作时调用。
closeBut.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent e) {
        System.exit(0);
    }           
});

鼠标事件

  • MouseListener:用于接收组件上“感兴趣”的鼠标事件(按下、释放、单击、进入或离开)的侦听器接口。(要跟踪鼠标移动和鼠标拖动,请使用 MouseMotionListener。)
    旨在处理鼠标事件的类要么实现此接口(及其包含的所有方法),要么扩展抽象类 MouseAdapter(仅重写所需的方法)。
    然后使用组件的 addMouseListener 方法将从该类所创建的侦听器对象向该组件注册。当按下、释放或单击(按下并释放)鼠标时会生成鼠标事件。鼠标光标进入或离开组件时也会生成鼠标事件。发生鼠标事件时,将调用该侦听器对象中的相应方法,并将 MouseEvent 传递给该方法。
    • 方法摘要
      • void mouseClicked(MouseEvent e)
        鼠标按键在组件上单击(按下并释放)时调用。
      • void mouseEntered(MouseEvent e)
        鼠标进入到组件上时调用。
      • void mouseExited(MouseEvent e)
        鼠标离开组件时调用。
      • void mousePressed(MouseEvent e)
        鼠标按键在组件上按下时调用。
      • void mouseReleased(MouseEvent e)
        鼠标按钮在组件上释放时调用。
  • MouseAdapter:接收鼠标事件的抽象适配器类。此类中的方法为空。此类存在的目的是方便创建侦听器对象。
    鼠标事件使用户能够跟踪鼠标何时被按下、释放、单击、移动、拖动、何时进入一个组件、何时退出、何时滚动鼠标滚轮。
    扩展此类可创建 MouseEvent(包括拖动和移动事件)或/和 MouseWheelEvent 侦听器,并针对所需事件重写方法。(
b.addMouseListener(new MouseAdapter(){
    int count = 1;
    int clickCount = 1;
    public void mouseEntered(MouseEvent e){             
        System.out.println("鼠标进入按钮" + count++ + "次");
    }

    public void mouseClicked(MouseEvent e){
        if(e.getClickCount()==2)
            System.out.println("鼠标双击"+ clickCount++ + "次");
    }
});

键盘事件

  • KeyListener:用于接收键盘事件(击键)的侦听器接口。旨在处理键盘事件的类要么实现此接口(及其包含的所有方法),要么扩展抽象 KeyAdapter 类(仅重写有用的方法)。
    然后使用组件的 addKeyListener 方法将从该类所创建的侦听器对象向该组件注册。按下、释放或键入键时生成键盘事件。然后调用侦听器对象中的相关方法并将该 KeyEvent 传递给它。
    • 方法摘要
      • void keyPressed(KeyEvent e)
        按下某个键时调用此方法。
      • void keyReleased(KeyEvent e)
        释放某个键时调用此方法。
      • void keyTyped(KeyEvent e)
        键入某个键时调用此方法。
  • KeyAdapter:接收键盘事件的抽象适配器类。此类中的方法为空。此类存在的目的是方便创建侦听器对象。
    扩展此类即可创建 KeyEvent 侦听器并重写所需事件的方法
b.addKeyListener(new KeyAdapter(){
    public void keyPressed(KeyEvent e){
        System.out.println(KeyEvent.getKeyText(e.getKeyCode())+":"+e.getKeyCode());
    }
});

常用的GUI对象

Button

  • 此类创建一个标签按钮。当按下该按钮时,应用程序能执行某项动作。

TextField

  • TextField 对象是允许编辑单行文本的文本组件。

TextArea

  • TextArea 对象是显示文本的多行区域。可以将它设置为允许编辑或只读。

MenuBar

  • MenuBar类封装绑定到框架的菜单栏的平台概念。为了将该菜单栏与Frame 对象关联,可以调用该框架的 setMenuBar 方法。

Menu

  • Menu 对象是从菜单栏部署的下拉式菜单组件。

MenuItem

  • 菜单项,菜单中的所有项必须属于类 MenuItem 或其子类之一

Dialog

  • Dialog 是一个带标题和边界的顶层窗口,边界一般用于从用户处获得某种形式的输入

FileDialog

  • FileDialog 类显示一个对话框窗口,用户可以从中选择文件。
    由于它是一个模式对话框,当应用程序调用其 show 方法来显示对话框时,它将阻塞其余应用程序,直到用户选择一个文件。

class myWinDemo{
    Frame myWin;

    MenuBar mb;
    Menu m;
    MenuItem openItem;

    FileDialog fd;

    public myWinDemo(){
        myWin = new Frame("MyWin");
        myWin.setBounds(200,300,500,400);
        myWin.setLayout(new FlowLayout());

        myWin.add(new TextField(40));
        myWin.add(new Button("确定"));
        myWin.add(new TextArea());

        mb = new MenuBar();
        m = new Menu("文件");
        openItem = new MenuItem("打开");
        m.add(openItem);
        mb.add(m);
        myWin.setMenuBar(mb);

        fd = new FileDialog(myWin,"打开",FileDialog.SAVE);

        myEvent();

        myWin.setVisible(true);
    }
    public void myEvent(){
        openItem.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e) {
                fd.setVisible(true);
            }           
        });
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值