找回密码
 注册
搜索
热搜: java php web
查看: 3183|回复: 4

[笔记]java学习笔记10--GUI

[复制链接]
发表于 2009-1-28 18:00:35 | 显示全部楼层 |阅读模式
[笔记]java学习笔记10--GUI
1 GUI:图形用户接口 C/S 架构下的客户端应用.
2 AWT : abstract windows tool  抽象窗口工具箱,跨平台组件库.它包括三个部分:

  (1)组件:界面元素,可以添加到容器中.
  (2)容器:用来管理多个组件.
  (3)布局管理器:决定容器中组件的摆放位置.

3 写一个图形界面应用的步骤:

  (1)选择一个容器:用来管理多个组件
  (2)设置布局管理器
  (3)添加组件
  (4)添加事件的监听(事件处理的代码)

              Conponent
                  |
              Container
       |          |                |
  JConponent    Window           Panel
     |          |       |          |
  JPanel     Frame   Dialog      Applet
               |        |          |
            JFrame   JDialog    JApplet


4 常用容器: JPanel, JFrame,JDialog  在java.awt和javax.swing包里
           一般以J开头的都在javax.swing包里,常用这个包下的容器

  Window: 有边框,有标题,能独立存在,作为一个应用程序的顶层容器存在.
  Frame: 可独立存在.
  Dialog:必须依赖于一个Frame或一个容器存在,不可独立存在

  JPanel :控制面板,没有边框,没有标题栏,不作为顶层容器添加到其它容器中,很多情况是不可见的容器.

5 五种布局管理器:前三种必须会

  (1)Flow Layout :流式布局管理器,按照组件添加到容器中的顺序,顺序排放组件位置.
                  默认为水平排列,如果越界那么会向下排列.排列的位置随着容器大小的改变而改变.
                  Panel和Applet的默认布局管理器.

  (2)Border Layout:边界布局管理器, 分东南西北中五个方位,顶层容器布局经常采用,
                    Window ,Frame ,Dialog的默认布局管理器.

  (3)GridLayout:网格布局管理器,将容器生成等长等大的条列格,每个块中放置一个组件.

  (4)CardLayout:卡片布局管理器,一个容器可以放置多个组件,但每次只有一个组件可见.

  (5)GridBagLayout:复杂的网格布局管理器,可指定一个组件占据多行多列.

6 常用组件:
  JButton  按钮
  JLabel  标签
  JTextField  单行文本域
  JTextArea   多行文本区
  JPasswordFiled  密码输入域
  JComboBox  下拉选择框
  JRadioButton  单选按钮
  JCheckBox   多选框
  JEditorPane  支持格式化文本的文本区
  Border 边框
  JMenuBar 菜单条
  JMenu 菜单
  JMenuItem 菜单项
  JPopupMenu 弹出式菜单
  JToolBar 工具条
  JList 多行列表
  JTree 树
  JTable 表格
  JSplitPane 分隔面板
  JTabbedPane 分层面板
  JSlider 滑动条
  JProgressBar 进度条
  JFileChooser 文件选择器
  JColorChooser 颜色选择器

7 AWT 事件模型重点)

  事件源:发出事件者,可以注册多个监听器    //一般是组件   add***Listener   java.swing.*;
  事件对象:发出的事件本身,在事件对象中会包含事件源对象.  //***event        java.awt.*;
  事件监听器:可以对多个事件源进行监听 监听接口:标准  //***Listener    java.awt.event.*;

  (1)事件源要和事件监听器完成注册关系
     //即事件源和监听器之间建立的一种授权关系:约定哪些事件如何处理,由谁去进行处理.
  (2)事件源给监听器发送事件对象
  (3)事件源会以事件对象为参数,调用事件监听器的相应的方法

  事件对象:属性:事件源对象  事件对象继承:java.util.EventObjct类.
  事件监听接口 所有方法的参数:事件对象 监听器接口必须继承java.util.EventListener接口.
  所有事件监听者都要实现这个接口。
  标记接口:没有任何方法的接口,如EventListener接口

8 缺省适配模式:对一个接口,用一个抽象类对这个接口给出默认的实现(空实现).我们可以继承抽象类  (Adapter适配器类),只覆盖我们感兴趣的方法,来达到实现接口的目的.

  例子:

  import java.util.*;
  public class TestGirl {
        public static void main(String[] args) {
                Girl g1=new Girl("Hanlj");
                EmotionListener b1=new Boy("Huxz");
                g1.addEmotionListener(b1);
                g1.fire();               
        }
  }

  //情感事件对象 事件源对象是事件对象的一个属性
  //对事件对象调用getSource方法会得到事件源对象
  class EmotionEvent extends EventObject{       //事件对象继承:java.util.EventObjct类
          //构造事件对象要以事件源作为参数
          public EmotionEvent(Object src){
                super(src);
          }
  }

  //事件监听接口中的每一个方法,都必须以对应的事件对象为参数
  interface EmotionListener extends EventListener{ //监听器接口继承java.util.EventListener接口.

        void whatCanIdoWhenGirlHappy(EmotionEvent e);
        void whatCanIdoWhenGirlSad(EmotionEvent e);
  }

  //监听接口的实现类
  class Boy implements EmotionListener{
        String name;
        public Boy(String name) {
                super();
                this.name = name;
        }
        public void whatCanIdoWhenGirlHappy(EmotionEvent e) {
            Object o=e.getSource();
            Girl g=(Girl)o;
            System.out.println(name+" said:"+g.getName()+", You happy,I happy!");
        }
        public void whatCanIdoWhenGirlSad(EmotionEvent e) {
            Object o=e.getSource();
            Girl g=(Girl)o;
            System.out.println(name+" said:"+g.getName()+", You sad,I am going to die!");
        }
  }

  //事件源
  class Girl{
        String name;
        EmotionListener bf=null;
        public Girl(String name) {
                super();
                this.name = name;}
        public String getName() {
                return name;
  }

        //完成注册关系
        public void addEmotionListener(EmotionListener l){
                if (this.bf==null){
                        this.bf=l;
                        System.out.println(name+" said:我终于嫁出去了!!");
                }
                else{
                        System.out.println(name+" said:Go Away! 不知道我已经嫁出去了吗?");
                }
        }

        /*
         * 所谓的事件源给事件监听器发送一个事件对象
         * 就是:事件源,以事件对象作为参数,调用事件监听器的相应方法
         */        
        public void fire(){
                //由事件源创建事件对象,以this作为参数
                EmotionEvent e=new EmotionEvent(this);
                bf.whatCanIdoWhenGirlSad(e);        
                bf.whatCanIdoWhenGirlHappy(e);        
        }
  }
好好学习,天天向上
发表于 2009-1-28 19:20:31 | 显示全部楼层
真的很感谢你              
回复

使用道具 举报

发表于 2009-1-28 20:18:53 | 显示全部楼层
很不错
楼主辛苦了
回复

使用道具 举报

发表于 2009-1-28 19:26:15 | 显示全部楼层
挺不错的总结的
回复

使用道具 举报

 楼主| 发表于 2009-1-28 19:21:05 | 显示全部楼层
NB-350晶闸管控制C02焊机
此系列二氧化碳焊机吸收国外焊机的先进性能。其规格有200A、350A、500A三种,根据焊接材料的不同,可采用二氧化碳气体或混合气体作为保护介质进行施焊,此系列<a href="http://www.hanjiemaimai.com/CO2-dianhanji.html">二氧化碳焊机</a>具有飞溅小、熔深比大、操作简便、焊缝成形好等优点。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|软晨网(RuanChen.com)

GMT+8, 2024-11-23 00:12

Powered by Discuz! X3.5

Copyright © 2001-2023 Tencent Cloud.

快速回复 返回顶部 返回列表