zoukankan      html  css  js  c++  java
  • .Net转Java自学之路—基础巩固篇十六(GUI)

    GUI

      图形化用户界面。Graphical User Interface 图形用户接口

      CLI:Command line User Interface 命令行用户接口;常见的DOS命令行操作

      Java为GUI提供的对象都存在Java.AWT、Java.Swing包中。

      AWT:Abstrace Window ToolKit  抽象窗口工具包;需调用本地系统方法实现功能。属于重量级控件。

      Swing:在AWT的基础上,建立了一套图形界面系统。增强了移植性,属于轻量级控件。

       AWT体系中 Component 类为基类。Container 为容器,是一个特殊组件,该组件中可以通过add添加其他组件。

      常见的布局有:

        FlowLayout:流式布局;从左到右的顺序排列。Panel默认的布局

        BorderLayout:边界布局;东、南、西、北、中。是Frame默认的布局

        GridLayout:网格布局;规则的矩形

        CardLayout:卡片布局;选项卡

        GridBagLayout:网格包布局;非规则矩形

      事件监听机制:

        1、事件源:就是被操作的组件。

        2、事件:会发生的一些事情。

        每一个事件的发生,有可能对应的动作有很多。将这些动作与事件源关联起来即可。只要有一个动作发生,就可以引发对应的事件。但是多个动作直接和事件源关联,不利于应用和扩展。所以,将这些动作封装成一个对象。让对象与事件源关联即可。该封装后的对象就形象的称为监听器。

        监听器和事件源相关联,当有外部动作作用到该事件源时,监听器就会自动判断这个动作,若该动作符合监听中的某个动作,那么,监听动作所对应的事件就会发生,该事件会被封装成一个事件对象,并传递给正在发生的这个动作,该动作其实就是一个函数;这个函数会执行并对事件进行处理。

        窗体事件监听的接口:WindowListener 处理窗口事件的类要么实现此接口所有的方法;要么扩展抽象类WindowAdapter 重新需要的方法。

        方法包含有:

          windowActiveted(WindowEvent e);活动Window时发生。

          windowClosed(WindowEvent e);调用dispose而将其关闭时发生。

          windowClosing(WindowEvent e);从窗口的系统菜单中关闭窗口时发生。

          windowDeactiveated(WindowEvent e);不再是活动窗体时发生。

          windowDeiconified(WindowEvent e);最大化。

          windowIconified(WindowEvent e);最小化。

          windowOpened(WindowEvent e);首次加载时发生。

        监听接口中,只要方法没有超过3个,该接口就没有适配器Adapter 。一般都有适配器。活动监听是没有适配器的。

        活动监听:

          按钮添加的都是活动监听。包括:按钮 button、菜单 menu 等。

          addActionListener();添加活动监听

            ActionListener();包含有一个方法:actionPerformed(ActionEvent e);

        键盘监听:

          addKeyListener();添加键盘监听

            适配器KeyAdapter()包含有三个方法:

              keyPerssend(KeyEvent e);按下时发生。

              keyReleased(KeyEvent e);释放键时发生。

              keyReleased(KeyEvent e);输入某个键时发生。

        鼠标监听:

          addMouseListener();鼠标监听

            鼠标适配器MouseAdapter() 包含有五个方法:

              mouseClicked(MouseEvent e);单击时发生

              mouseEntered(MouseEvent e);鼠标进入时发生

              mouseExited(MouseEvent e);鼠标离开时发生

              mousePressed(MouseEvent e);按下时发生

              mouseReleased(MouseEvent e);释放时发生

    实例:基本功能简述

    Frame f=new Frame("窗体名称");
    f.setSize(with,height);//设置窗体大小
    f.setLocation(x,y);//窗体出现屏幕的位置
    //
    f.setBound(x,y,with,height);//设置窗体大小,直接指定位置
    f.setLayout(new FlowLayout());//设置布局方式
    
    Button btn=new Button("按钮名称");//创建按钮
    f.add(btn);//按钮添加到窗体
    
    f.addWindowListener(new 监听事件());//addWindowListener()给窗体添加监听器。
    //括号中new的监听器对象可以是继承WindowAdapter的自定义的监听器也可以是WindowAdapter 。例:class ClassName extends WindosAdapter{ }
    //或 使用匿名内部类 f.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0);//关闭对话框 } }); //按钮添加活动监听事件 注:按钮不能添加窗体监听事件 btn.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ //Code...... } }); //键盘监听事件 btn.addKeyListener(new KeyAdapter(){ public void keyPerssend(KeyEvent e){ e.getKeyChar();//键的字符 e.getKeyCode();//键的哈希值 KeyEvent.getKeyText(e.getKeyCode());//键的文本(键盘上的字符)。 //组合键 e.isAltDown();//Alt键是否按下 e.isAltGraphDown(); e.isConsumed();//是否已经使用此事件 e.isControlDown();//Ctrl键是否按下 e.isShiftDown();//Shift键是否按下 } }); TextField tf=new TextField(10);//文本框 f.add(tf); //定义文本框只能输入数字 tf.addKeyListener(new KeyAdapter(){ public void keyPressed(KeyEvent e){ int code=e.getKeyCode(); if(!(code>=KeyEvent.CK_0 && code<=KeyEvent.VK_9)) e.consume();//取消事件默认处理效果;取消输入效果 } }); //Dialog 对话/提示框。Dialog 可以添加窗体事件监听 Dialog d=new Dialog(f,"提示框标题",false);//false:可以不关闭提示框的情况下操作主界面;true:必须关闭提示框才能操作主界面。 d.setSize(with,height);//大小 Lable lb=new Lable();//标签 d.add(lb);//给提示框添加文本内容 d.add(btn);//给提示框添加按钮 d.setText("提示信息"); d.setVisible(true);//弹出提示框 FileDialog fd=new FileDialog();//文件对话框 fd.setTitle("文件对话框标题"); fd.setMode(FileDialog.LOAD);//选中文件加载 fd.setMode(FileDialog.SAVE);//文件写入 fd.setVisible(true); fd.getDirectory();//获取文件对话框的目录 fd.getFile();//获取此文件对话框的选中文件 fd.getFilenameFilter();//确定此文件对话框的文件名过滤器 fd.setDirectory(path);//文件对话框窗口目录设置为指定目录 fd.setFile(strfile);//文件对话框选定文件设置为指定文件 fd.filenameFilter();//文件对话框的文件名过滤器设置为指定过滤器 f.setVisible(true);//窗体显示与否

    菜单系列:

      MenuComponent    extends Object

        >>Menubar:菜单栏

        >>MenuItem:菜单项

          >>>Menu:菜单

    import java.awt.*;
    import java.awt.event.*;
    
    class ClassName{
        private Frame f;
        private Menubar bar;
        private MenuItem mi,childMi;
        private Menu m,childM;
    
        ClassName(){
            init();
        }
    
        public void init(){
            f=new Frame("窗体标题");
            f.setBount(x,y,with,height);
            bar=new Menubar();
            m=new Menu("菜单名");
            mi=new MenuItem("菜单项名称");
    
            childM=new Menu("子菜单");
            childMi=new MenuItem("子菜单 菜单项名称");
    
            childM.add(childMi);//子菜单
            m.add(childM);
    
            m.add(mi);
            bar.add(m);
    
            f.setMenubar(bar);
    
            f.setVisible(true);
        }
    
        private void event(){
            //一系列的事件监听Code...
        }
    }

    打Jar包:

      javac -d . 包名.java  将执行文件打包到当前目录“包名”文件夹下

      jar -cvf my(jar包名).jar 包名  将包中的执行文件打jar包

      当前打jar包的方式在配置文件中没有指定执行文件是那个类文件;故、需要新建一个清单信息文件,可以是任意文件。清单信息文件内容是固定格式的信息内容:

      格式:

        Main-Class: 包名.类名  (后要有回车键表示结束)

      包名前面需要有一个空格,否则会报IO异常:invalid header field (无效标头字段名称)

      类名后面需要有一个回车键表示结束,否则配置文件中会没有指定执行文件配置信息。

      在打Jar 包时需读取清单信息文件内容,命令行变为:

      jar -cvfm my(jar包名).jar 清单信息文件名 包名

  • 相关阅读:
    springboot-web进阶(四)——单元测试
    Java Programming Language Enhancements
    浅谈现代编程语言语法与标准库紧绑定现象
    Objective-C如何自己实现一个基于数组下标的属性访问模式
    Objective-C如何自己实现一个for-each语法形式
    Objective-C中的self与LLVM Clang新引入的instancetype
    在Win7下玩PC游戏发生类似d3d9x_43.dll找不到的情况
    x86架构64位模式下的寄存器列表
    OpenCL如何判定一个work-group的最大Local Memory大小
    关于一个GPGPU优化中Bank Conflict的讨论
  • 原文地址:https://www.cnblogs.com/zltao/p/10035745.html
Copyright © 2011-2022 走看看