zoukankan      html  css  js  c++  java
  • GUI

                     Component(组件父类)      
    Containner(容器)可加组件       Button Label(封装文字成组件)  
    Window(窗口) Panel(面板)     Checkbox    
    Frame   Dialog(对话框)       TextConponent    
            TextArea    
                 
                 

    一、布局管理器:组件的排放位置

     常见布局

    FlowLayout(流式布局)

        特点:左1,左2

                 左3 ,左4

     BorderLayout(边界式布局)

        特点:麻将桌牌式

     GridLayout(网格包式布局)  

        特点:九宫格(计算器)

    二、Java包:java.awt

    事例:

    import java.awt.Button;
    import java.awt.FlowLayout;
    import java.awt.Frame;
    
    
    public class AwtDemo {
        public static void main(String[] args) {
            Frame f=new Frame("my awt");
            f.setVisible(true);//默认为false
            //嫌窗体小不好?
            f.setSize(500, 1000);//500为宽,1000为高
            //窗体位置不好?
            f.setLocation(200, 300);//以电脑显示屏为参照,X为据左边宽度,y为据上的宽度
          //太单调了?加个组件按钮
            Button b=new Button("我是一个按钮");
            f.add(b);
            //按钮占整个窗口?原因是默认的布局管理器是BoderLayout,我们就设置成流式布局吧
            f.setLayout(new FlowLayout());
            //按按钮不会产生其他功能跳转,那就为它加个监听器
        }
    
    }

    三、事件监听机制

    1、事件源:被触发

    2、监听器:监听动作并且被注册到事件源

    3、事件对象,里面封装了事件源

    4、事件对象传递给了监听器作出事件处理

    特点:

       事件源:awt包的组件,如按钮

       事件:每一件事件源都有自己特有的对应事件和共性事件

       监听器:将可以触发某一个事件的动作(相当一个报警装置)

    代码不需要写,已经封装好了,调用相关对象即可

    事例:点按钮进行窗口关闭

    import java.awt.Button;
    import java.awt.FlowLayout;
    import java.awt.Frame;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    
    
    public class AwtDemo {
        public static void main(String[] args) {
            Frame f=new Frame("my awt");
            f.setVisible(true);//默认为false
            //嫌窗体小不好?
            f.setSize(500, 1000);//500为宽,1000为高
            //窗体位置不好?
            f.setLocation(200, 300);//以电脑显示屏为参照,X为据左边宽度,y为据上的宽度
          //太单调了?加个组件按钮
            Button b=new Button("我是一个按钮");
            f.add(b);
            //按钮占整个窗口?原因是默认的布局管理器是BoderLayout,我们就设置成流式布局吧
            f.setLayout(new FlowLayout());
            //按按钮不会产生其他功能跳转,那就为它加个监听器
            
            //点按钮关闭窗口
            //步骤:谁是事件源:frame
            //谁可以做监听器被注册到事件源?
            //方法:addWindowListener(WindowListener l),
            //WindowListener是接口,要重写7个方法才可以完成监听器的功能,怎么办?
            /**那就另外写一个监听类来实现windowListener
                可是需要覆盖7个方法,而我只用到关闭的动作。怎么办?
                
                由于WindowListener的子类WindowAdapter已经实现了WindowListener接口
               也覆盖了其中所有的方法,那么我只要继承WindowAdapt覆盖我需要的方法即可
            
            */
          //参数不用再填WindowListener的对象了,new一个我下边自定义的类的对象即可
            f.addWindowListener(new MyWindowListener());
        }
    
    }
    //自定义的类
    class MyWindowListener extends WindowAdapter{ public void windowClosing(WindowEvent e){ //这里的参数e 是我在外边点“关闭”的时候传递进来的 System.out.println("window colsing"); } }

    下面是一个比较常规的事例:

    import java.awt.Button;
    import java.awt.FlowLayout;
    import java.awt.Frame;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    
    
    public class FrameDemo3 {
        //-----------------------------事件源部分
        //定义需要的组件的引用
          private Frame f;
          private Button but;
          
        public  FrameDemo3(){
              init();
          }
        public static void main(String[] args) {
            new FrameDemo3();
        }
        public void init(){
            f=new Frame("我的框架");
            //setBounds(int x,int y,int width,height),
            //以电脑显示屏为参照,x表据左边,y表据右边,width表框体的宽,height则为高
          f.setBounds(300, 100, 500, 500);
          //我不想按钮太大,所以选用FlowLayout
          f.setLayout(new FlowLayout());
          
          but=new Button("my button");
          //将组件添加到frame中
          f.add(but);
          //显示窗体
          f.setVisible(true);
          //还要加载一下相关的事件
          myEvent();
          
        }
        //--------------------监听器部分---------------------------------------
        private void myEvent(){
            f.addWindowListener(new WindowAdapter(){
                public void windowClosing(WindowEvent e){
                    System.exit(0);
                }
                
                
            });
            //需求:让按钮具备退出程序的功能
            //这个时候按钮就变成了事件源,那么选择哪个监听器呢?
            //不是windowListener这个监听器了
            //通过关闭窗体事例了解到,想要知道哪个组件具备什么样的特有监听器
            //需要查看该组件对象的功能
                but.addActionListener(new ActionListener(){
    
                    @Override
                    public void actionPerformed(ActionEvent e) {
                        System.out.println("退出,我是按钮");
                    }});
            
        }
          
          
    
    }

     

      

  • 相关阅读:
    上下文切换
    NUMA的取舍与优化设置
    KVM CPU线程等学习记录
    openstack cpu pinning
    virt-install详解
    对KVM虚拟机进行cpu pinning配置的方法
    30 个 OpenStack 经典面试问题和解答
    OpenFace Docker 使用简介
    单链表、双链表及单链表的逆序
    Ubuntu14.04.1安装搜狗拼音输入法
  • 原文地址:https://www.cnblogs.com/chenqr/p/6425141.html
Copyright © 2011-2022 走看看